Időzóna: UTC + 1 óra [ nyi ]




Új téma nyitása Hozzászólás a témához  [ 238 hozzászólás ]  Oldal Előző  1 ... 4, 5, 6, 7, 8, 9, 10 ... 12  Következő
Szerző Üzenet
  Offline
 Hozzászólás témája: WoG Team hírek
HozzászólásElküldve: 2006 okt. 27 pén., 17:31 
Avatar

Csatlakozott: 2004 márc. 10 szer., 14:16
Hozzászólások: 2375
Tartózkodási hely: 60
Hermann, the Weird kilépett a Team-ből, bokros elfoglaltságaira hivatkozva.
Ötvenen maradtunk.. :cry:

Továbbra is keresünk angolul írni-olvasni tudó szkriptírókat.

Más. Elkészült cégre a 121-es szkript. :wink:


Vissza a tetejére
 Profil  
 
  Offline
HozzászólásElküldve: 2006 nov. 18 szomb., 20:24 
Avatar

Csatlakozott: 2004 márc. 10 szer., 14:16
Hozzászólások: 2375
Tartózkodási hely: 60
A következő szkript tesztelése (és javítása) után az ERM Debugger jön, utána pedig a KARAVÁN. Hexadecimális/bináris számokat kedvelő tesztelőket várok. Esős téli estékre számítva bemásolom:
-----------------------------------------------------------------------------------------
ZVSE
ERMS_ScriptName=Limited ERM Debugger- Script129
ERMS_ScriptAuthor=Doom3d
ERMS_ScriptVersion=0.0.0
ERMS_ScriptDate=18.11(November).2006
ERMS_ScriptERMVersion=2.70
ERMS_ScriptLanguage=English or Magyar (native)
ERMS_ScriptUsedVariables=shared1460-1491(readonlylookuptable);v258-262;v313-319
ERMS_ScriptUsedFlags=-
ERMS_ScriptUsedTimers=-
ERMS_ScriptUsedFunctions=FU644-647
ERMS_ScriptUsedMacroNames=-
_WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!
ERMS_PoweredBy=ERM Scripter v. 2004.10.5.945
ERMS_AdditionalFiles=
* | (or= alt+w on my keyboard, used as hotkey, so I had to use copy&paste)

* build5 (first external release)
* enhancements: 'Match count only' mode. FU 647: signed integer conversion.
*
*build4
* patch1: lookup table moved from v1420-1451 to v1460-1491, there was a sharing violation
* bugfix1: FU645 part2 check: y3<1 instead of y3<0. If y3=0, part2 010 mask will select bits 0-31, not empty sequence..
** we should have part2 only if lenght2>0, so exit if <1. :)
--------------------------------------------------------------------------------
TEST SECTION;
* tesztek:
* mode0: ok
* mode1: ok
* mode2: ok
* mode3:
* mode4:
* mode5:
* mode6:
* mode7:

!?CM0;
!!VRv24:Sv1491 :2;
!!IF:M^v1491=%V1491, v1491:2=%V24^;

!!FU:E;
*~!~?*CM0;
*~!~!*VRv24:C32768/2/0/0/0/0; input/output
*~!~!*VRv600:C10/10/10/10; lenght list
*~!~!*VRv313:C24/15/26/4/600/0/0; settings
*~!~!*DO645/1/999/1:P2; test call
*~!~!*IF:M^input/output v24:%V24, v25:%V25, v26:%V26,v27:%V27, v28:%V28, v29:%V29^; should be: 32768,2,1,256,0,0
*~!~!*FU:E;

--------------------------------------------------------------------------------
*[BITWISE PACKER];
; used to copy data between bitfield bits/variables and variable list, and to count matches with mask
; 'read' means: copy from bitfield to variable list, 'write' means: copy from variable list to bitfield
; bitfield: consecutive (next to each other) 'v' variables handled bitwise&continuosly (15 v vars=480 bits, and so on..)
; variable list: consecutive (next to each other) 'v' variables handled as separate 32 bit signed integers
** used special variables (with short names):
* v313 pointer: starting variable of bitfield (v1)
* v314 pointer: starting bit of bitfield (b1)
* v315 pointer: starting variable of variable list(v2)
* v316 value: step counter (total number of executions), MAX. 999 (sc)
* v317 pointer: variable lenght list // value: variable lenght(L)
* v318 value: Shift per turn (S)
* v319 not used, or match counter (nu, MC) HAVE TO RESET MANUALLY.
** x1: mode, including read/write sub-mode
** x2: match counter selection mask
** x3: write enabled(=0)or disabled(<>0) for 'counter only' mode

** v1460-v1491: read only lookup table to compute 2^0..2^31.

* variable lenght list: user defined lenghts for variables on bitfield, max. lenght 31 bit
* variable sequence: whole, consecutive(next to each other) v variables ( for input/output
---
** Usage: ~~DO64'$1'/1/'$2'/1:P'$3'; where '$1'=4,5,6; v316<='$2'<=999; and $3=0/1,2/3,or 4/5 for read/write
** exemple: ~~VRv313:C.. followed by ~~DO 645/1/999/1:P2; means read user defined composite variables
** You can always set '$2' to 999, but You can lower it for security reasons.
** Bitwise packer may overwrite foreign variables, if You mistype v316 counter value.
** Please, double check VR:C settings at least for v313..v317. Thanks.
**
* FU644
* Mode0 read bits from bitfield, and write to variable sequence
* Mode1 read ZERO/NOT ZERO state of variables, and write bitfield bits accordingly (NOT ZERO means 1)
** Compairing to 'bit' macro: Input parameters: bit position <0, or >31 allowed, direct bit write allowed,
** multiple read/write allowed, and much faster execution.. Longer commands, but more features.
** Count matches with mask: 0/not 0.

* FU645
* Mode2 read user defined bit sequences from bitfield, and write to variable sequence
* Mode3 read bit sequences from variable sequence, and write them to bitfield
** Variable lenght list used. ( Match counter not used.)

* FU646
* Mode4 read user defined bit sequences with fixed lenght and shift, and write to variable sequence,
** and count number of matches in v319.
* Mode5 read bit sequences with fixed lenght and shift from variables, and write them to bitfield,
** and count number of matches in v319.
*** So if you start to read from v24 bit15 with lenght 3, shift 45,
*** then sequence lenght will be 3 bit, and next 3 bit sequence will start at v24b15 +45= v25 bit28

* FU647
* Mode6 convert user defined n bit signed integers to 32 bit signed integers, and count number of matches in v319.
* Mode7 convert 32 bit signed integers to user defined n bit signed integers, and count number of matches in v319.
** sign bit will be moved between bit'n-1' and bit31. (Most significant bit handled as sign bit)
** n bit integers have to be stored in separate variables. So copy out from bitfield with FU 645/646,
** and then convert with FU 647. Matches will be counted with 32 bit integer forms.

HINTs;
* FU 644 is intended to read/write 1 bit 'system flags' stored in v variables.

* FU 645 is intended to read/write user defined composite variables with several(different) sub-variables.
** (hypotethical) Exemple 1:
** "Caravan to Town" variable consists of (owner, creature type, quantity, experience, timer, WB flag),
** sub-variable lenghts are, let say: 3,8,10,13,4,1 bits. 39 bits in Total.

* FU 646 is intended to read/write a given sub-variable sequence of user defined composite variables,
** or user defined variable sequence in an index table (variables of the same type).
** (hypotethical) Exemple 1: Arrival times of Caravans for a given Town: subtype timer(lenght=4bit),
** shift= lenght of "Caravan variable" (39 bits, see above),max. 7 Caravans per Town, so (lenght=4, shift=39, counter=7)
** Exemple 2: Number of potions owned by actual hero: max. 7 potion/type, 6 type ->6* 3bit in w variable.
** First you have to copy out the w variable to a v variable, then everything as usual. (lenght=3,shift=3, counter=6)
** Exemple 3: Lookup table for 'Caravans': max. 7 caravans per target Town, actual number stored in a 48*3bit table.
** /max. 48 Towns per map, 3 bit to store 0..7 values, so a 144 bit long bitfield needed/(lenght=3,shift=3,counter=48)

--------------------------------------------------------------------------------
BITWISE PACKER SETUP; lookup table to calculate 2^x (x:0-31) placed on v1460-v1491 for speedup
!#VRv1460:C1/2/4/8/16/32/64/128/256/512/1024/2048/4096/8192/16384/32768;
!#VRv1476:C65536/131072/262144/524288/1048576/2097152/4194304/8388608/16777216/33554432/67108864/134217728/268435456/536870912/1073741824/-2147483648;
** v1491= +2147483648 also tested ok, but -2147483648 is used ..
--------------------------------------------------------------------------------
* y1..y10: "more important" values, y90-100:temporary
* counter(Last Turn?) checks: "<=" instead of "=" for safety reasons
*FU 644;
* v313 pointer: starting variable of bitfield (v1)
* v314 pointer: starting bit of bitfield (b1)
* v315 pointer: starting variable of variable list(v2)
* v316 value: step counter (total number of executions), MAX. 999 (sc)
* v317 not used (lenght always 1)
* v318 value: Shift per turn (S)
* v319 not used, or match counter (nu, MC) HAVE TO RESET MANUALLY.
** x1: mode, including read/write sub-mode
** x2: match counter selection mask (0 or not 0, if used) /0 by default/ (SM)
** x3: write enabled(=0)/disabled(<>0) for 'match count only' mode, enabled by default (WE)

** Match Counter is always ON.

MODE0;
; copy bit values from bitfield var1 bit1 to variable sequence starting with vv317, until x16<step counter
; setup v313-v319 with VR:C and then ~~DO644/1/999/1:P0;
MODE1;
;write bits to bitfield, if v2 not 0, until x16<step counter
; setup v313-v319 with VR:C and then ~~DO644/1/999/1:P1;

!?FU644;
; offset handling: actual v1,b1
!!VRy90:Sv314 :32; dv1
!!VRv314:%32;b1
!!VRv313:Sdy90;v1
* y90 free
; create selection mask for var v1 bit b1
!!VRy90:S1460 +v314;
!!VRy1:Svy90;
!!VRy2:S-1 -y1; inverted mask
; select b1
!!VRy3:Svv313 &y1;
!!VRy3&y3<>0:S1;
; read
!!VRvv315&x1=0/x3=0:Sy3;
; write
!!VRy1&vv315=0:S0; check if zero
!!VRvv313&x1=1/x3=0:&y2 |y1; reset b1 bit, and set if vv315 not zero
; increment pointers for next turn
!!VRv314:Sdv318;b1
!!VRv315:Sd1; v2
; check counter
!!VRx16&v316<=x16:S999; Is it last turn?
; Match count (0, or not 0)
!!VRy91&x2<>0:S1; selection mask
!!VRy92&vv315<>0:S1; v2 is 0, or not 0?
!!VRv319&y3=y91/x1=0:Sd1; count if read
!!VRv319&y92=y91/x1=1:Sd1; count if write

--------------------------------------------------------------------------------
*FU 645
* v313 pointer: starting variable of bitfield (v1)
* v314 pointer: starting bit of bitfield (b1)
* v315 pointer: starting variable of variable list(v2)
* v316 value: step counter (total number of executions), MAX. 999 (sc)
* v317 pointer: variable lenght(L) list
* v318 not used
* v319 not used
** x1: mode, including read/write sub-mode

** Remark: This FU is used to copy a set of different variables, so Match counter makes no sense.

MODE2;
; read bit sequence FROM variable vv313 bit v314, lenght vv317, and write output TO vv315,
*until x16< v316 step counter. /v# -> vv# pointers will be shifted for next round/
; setup v313-v319 with VR:C and then ~~DO645/1/999/1:P2;

!?FU645;
!!FU&x1<>2:E;
; offset handling: actual v1,b1
!!VRy90:Sv314 :32; dv1
!!VRv314:%32;b1
!!VRv313:Sdy90;v1
* y90 free
; copy source values
!!VRy1:Svv313; v1
!!VRy2:Svv317; L
; actual bit sequence is in one, or two variables?
!!VRy3:Sv314 +y2 -32; calculate next var starting bit=lenght2 if two parts
!!VRy2&y3>0:-y3; L1
; first step: down to bit0
!!VRy90:S1460 +v314; lookup 2^b1
!!VRy4:Svy90;
*y90 free

*down to bit0* there are no unsigned 32 integers in WoG; going around the problem..
!!VRy5:Sy1 &2147483647 :y4; select bit0-30. bit31 not shifted now(-10:32=0, instead of 67108864..shifted bit31 missing)
!!VRy90:S2147483648 :y4; select bit31. playing with signed 32 integer abilities. 2^31 handled as -2^31, not -0 :))
* remarks: y90<0, so if y1<1, all bits above shifted bit31 will become 1, but later we have a selection mask.

!!VRy5&y1<0:|y90; copy parts together. Now shifting is ok.
*y90 free
; selection mask for bit sequence, calculate 2^L1-1
!!VRy90:S1460 +y2;
!!VRy6:Svy90; needed for part2
!!VRy7:Sy6 -1; mask
!!VRvv315:Sy5 &y7; OUTPUT PART1
* y1,2,4,5,7,90 free

;increment pointers for next turn
!!VRv314:Sdy2; b1+L1
!!VRv315&y3<1:Sd1; v2 pointer* "not >0" equals with "<1" (y3 is integer)
!!VRv317:Sd1; L pointer
; counter
!!VRx16&v316<=x16:S999; Is it last turn?
!!FU&y3<1:E;

** PART2
; lenght2 in y3, v1= v313 +1, output2 offset in y6, v315 actual
!!VRy90:Sv313 +1; v1+1 pointer
; select sequence part2, calculate 2^L2-1
!!VRy91:S1460 +y3;
!!VRy92:Svy91 -1; mask
!!VRy4:Svy90 &y92 *y6; OUTPUT PART2 (shifted up)
!!VRvv315:|y4; OUTPUT

;increment pointers for next turn
!!VRv314:Sdy3; b1+L2
!!VRv315:Sd1; v2 pointer*

MODE3;
; write bit sequence TO variable vv313 bit v314, lenght vv317, FROM vv315, until x16< v316 step counter
* /v# -> vv# pointers will be shifted for next round/
; setup v313-v319 with VR:C and then ~~DO645/1/999/1:P3;
** Variable boundary inside bit sequence enabled,
** for exemple: sequence from v600 bit 24 to v601 bit 7: v313 600, v314 (b1) 24, Lenght vv317=16
** Max. allowed sequence lenght is 31 bit, so source bit31 shift not needed.

!?FU645;
!!FU&x1<>3:E;
; offset handling: actual v1,b1
!!VRy90:Sv314 :32; dv1
!!VRv314:%32;b1
!!VRv313:Sdy90;v1
* y90 free
; copy source&target values
**VRy1:Svv313; v1 not needed
!!VRy2:Svv317; L
!!VRy1:Sy2; copy for inc
!!VRy4:Svv315; v2

; sequence will be in one, or two variables?
!!VRy3:Sv314 +y2 -32; calculate next var starting bit=lenght2 if two parts L2
!!VRy2&y3>0:-y3; L1
; preparations for part1
* calculate 2^L1-1 for 0x0 selection mask, *2^v314 to shift in position
!!VRy90:S1460 +y2;
!!VRy5:Svy90; needed for part2 for source shifting
!!VRy6:Sy5 -1; 0x0 mask 2^L1-1
!!VRy7:S1460 +v314; shift
*y90 free
; write part1:
* create 101 mask to target region reset, OR it with shifted source
* remarks: yyy AND 101= y0y, OR 0x0 = yxy, where yyy target, xxx source, selected region to write: 0x0.
!!VRy8:Sy4 &y6 *y7; shifted source 0x0
!!VRy90:Sy6 *y7; shifted 010 mask
!!VRy9:S-1 -y90; 101 mask
*y90 free
!!VRvv313:&y9 |y8; part1 OUTPUT

;increment pointers for next turn
!!VRv314:Sdy1; b1+L * not used in part2
!!VRv315:Sd1; v2 pointer *not used in part2
!!VRv317:Sd1; L pointer
; counter
!!VRx16&v316<=x16:S999; Is it last turn?
!!FU&y3<1:E; exit if only one part
** y1-y2,y6-y9 free; source in y4, y3 lenght2, y5 2^L1

** PART2
; preparations for part2
!!VRy90:S1460 +y3; 2^L2
!!VRy1:Svy90 -1; 010 mask
!!VRy2:S-1 -y1; 101 mask
!!VRy6:Sv313 +1; target2 pointer
; write part2
* Down to bit0 with source2, selection mask, reset target2, OR with source2
!!VRy4::y5 &y1; down to bit0 & select
!!VRvy6:&y2 |y4; reset target2, OR with selected source part; part2 OUTPUT

--------------------------------------------------------------------------------
*FU 646
* v313 pointer: starting variable of bitfield (v1)
* v314 pointer: starting bit of bitfield (b1)
* v315 pointer: starting variable of variable list(v2)
* v316 value: step counter (total number of executions), MAX. 999 (sc)
* v317 value: variable lenght(L)
* v318 value: Shift per turn (S)
* v319 match counter (MC) HAVE TO RESET MANUALLY.
** x1: mode, including read/write sub-mode
** x2: match counter selection mask
** x3: write enabled(=0)or disabled(<>0) for 'counter only' mode (WE)

** Match Counter is always ON.

MODE4; biggest part copied out from mode 2, changes marked with ***
; read bit sequence FROM variable vv313 bit v314, lenght v317, and write output TO vv315,
*until x16< v316 step counter. /v# -> vv# pointers will be shifted for next round/
; setup v313-v319 with VR:C and then ~~DO646/1/999/1:P4/SM/WE;

!?FU646;
!!FU&x1<>4:E; ***
; offset handling: actual v1,b1
!!VRy90:Sv314 :32; dv1
!!VRv314:%32;b1
!!VRv313:Sdy90;v1
* y90 free
; copy source values
!!VRy1:Svv313; v1
!!VRy2:Sv317; L *** Am I lazy? :)
; actual bit sequence is in one, or two variables?
!!VRy3:Sv314 +y2 -32; calculate next var starting bit=lenght2 if two parts
!!VRy2&y3>0:-y3; L1
; first step: down to bit0
!!VRy90:S1460 +v314; lookup 2^b1
!!VRy4:Svy90;
*y90 free

*down to bit0* there are no unsigned 32 integers in WoG; going around the problem..
!!VRy5:Sy1 &2147483647 :y4; select bit0-30. bit31 not shifted now(-10:32=0, instead of 67108864..shifted bit31 missing)
!!VRy90:S2147483648 :y4; select bit31. playing with signed 32 integer abilities. 2^31 handled as -2^31, not -0 :))
* remarks: y90<0, so if y1<1, all bits above shifted bit31 will become 1, but later we have a selection mask.

!!VRy5&y1<0:|y90; copy parts together. Now shifting is ok.
*y90 free
; selection mask for bit sequence, calculate 2^L1-1
!!VRy90:S1460 +y2;
!!VRy6:Svy90; needed for part2
!!VRy7:Sy6 -1; mask
!!VRy8:Sy5 &y7; *** speeding up match count, OP1 temp value
!!VRvv315&x3=0:Sy8; OUTPUT PART1 *** write enabled?
* y1,2,4,5,7,90 free

;increment pointers for next turn
*** NO v314 shift with L1
!!VRv314:Sdv318; because shift value is set manually (v314 not used in part2)
!!VRv315&y3<1:Sd1; v2 pointer* "not >0" equals with "<1" (y3 is integer)
*** NO v317 shift

; Match Count, PART1 ***
!!VRv319&y8=x2/y3<1:Sd1;

; step counter
!!VRx16&v316<=x16:S999; Is it last turn?
!!FU&y3<1:E;

** PART2
; lenght2 in y3, v1= v313 +1, output2 offset in y6, v315 actual, output1 in y8
!!VRy90:Sv313 +1; v1+1 pointer
; select sequence part2, calculate 2^L2-1
!!VRy91:S1460 +y3;
!!VRy92:Svy91 -1; mask
!!VRy4:Svy90 &y92 *y6; Output Part2 (shifted up)
!!VRy9:Sy8 |y4; *** speeding up match count, final OP temp value
!!VRvv315&x3=0:Sy9; OUTPUT *** write enabled?

;increment pointers for next turn
*** NO v314 shift with L2
!!VRv315:Sd1; v2 pointer*

; Match Count, PART2 ***
!!VRv319&y9=x2:Sd1;

MODE5; biggest part copied out from Mode3, changes marked with ***
; write bit sequence TO variable vv313 bit v314, lenght v317, FROM vv315, until x16< v316 step counter
* /v# -> vv# pointers will be shifted for next round/
; setup v313-v319 with VR:C and then ~~DO646/1/999/1:P5;
** Variable boundary inside bit sequence enabled,
** for exemple: sequence from v600 bit 24 to v601 bit 7: v313=600, v314 (b1) 24, Lenght v317=16
** Max. allowed sequence lenght is 31 bit, so source bit31 shift not needed.

!?FU646;
!!FU&x1<>5:E; ***

; Match count *** ->
!!VRv319&vv315=x2:Sd1;
!!VRv315&x3<>0:Sd1;
!!FU&x3<>0:E; -> *** exit if write disabled

; offset handling: actual v1,b1
!!VRy90:Sv314 :32; dv1
!!VRv314:%32;b1
!!VRv313:Sdy90;v1
* y90 free
; copy source&target values
**VRy1:Svv313; v1 not needed
!!VRy2:Sv317; L ***
** copy y2 to y1 for inc ***
!!VRy4:Svv315; v2

; sequence will be in one, or two variables?
!!VRy3:Sv314 +y2 -32; calculate next var starting bit=lenght2 if two parts L2
!!VRy2&y3>0:-y3; L1
; preparations for part1
* calculate 2^L1-1 for 0x0 selection mask, *2^v314 to shift in position
!!VRy90:S1460 +y2;
!!VRy5:Svy90; needed for part2 for source shifting
!!VRy6:Sy5 -1; 0x0 mask 2^L1-1
!!VRy7:S1460 +v314; shift
*y90 free
; write part1:
* create 101 mask to target region reset, OR it with shifted source
* remarks: yyy AND 101= y0y, OR 0x0 = yxy, where yyy target, xxx source, selected region to write: 0x0.
!!VRy8:Sy4 &y6 *y7; shifted source 0x0
!!VRy90:Sy6 *y7; shifted 010 mask
!!VRy9:S-1 -y90; 101 mask
*y90 free
!!VRvv313:&y9 |y8; part1 OUTPUT

;increment pointers for next turn
!!VRv314:Sdv317; b1+v317 as shift value instead of y1=L * not used in part2 ***
!!VRv315:Sd1; v2 pointer *not used in part2
** L not in pointer ***

; counter
!!VRx16&v316<=x16:S999; Is it last turn?
!!FU&y3<1:E; exit if only one part
** y1-y2,y6-y9 free; source in y4, y3 lenght2, y5 2^L1

** PART2
; preparations for part2
!!VRy90:S1460 +y3; 2^L2
!!VRy1:Svy90 -1; 010 mask
!!VRy2:S-1 -y1; 101 mask
!!VRy6:Sv313 +1; target2 pointer
; write part2
* Down to bit0 with source2, selection mask, reset target2, OR with source2
!!VRy4::y5 &y1; down to bit0 & select
!!VRvy6:&y2 |y4; reset target2, OR with selected source part; part2 OUTPUT

--------------------------------------------------------------------------------
*FU 647: Conversion between n-bit and 32bit signed values.
; bit0-(n-2) copied, moving bit(n-1) <->bit31. Read: ->, write: <-
* v313 not used
* v314 not used
* v315 pointer: starting variable of variable list(v2)
* v316 value: step counter (total number of executions), MAX. 999 (sc)
* v317 value: variable lenght(L), 1-31
* v318 value: Shift per turn (S) FOR v2, counted in 32 bit variables
* v319 match counter (MC) HAVE TO RESET MANUALLY.
** x1: mode, including read/write sub-mode
** x2: match counter selection mask
** x3: write enabled(=0)or disabled(<>0) for 'counter only' mode (WE)

** Match Counter is always ON.
* Please, don't forget to set and check v318.

MODE6; convert n bit signed integers to 32 bit signed integers.
!!FU&x1<>6:E;
; convert
!!VRy1:Svv315; read in
!!VRy90:S1460 +v317;
!!VRy91:Svy90 -1; select range
!!VRy90:-1;
!!VRy92:Svy90;select sign bit
!!VRy93:S-1 -y92; inverted mask for sign
!!VRy2:Sy1 &y92; sign bit
!!VRy1:&y93; reset sign bit
!!VRy1&y2<>0:|-2147483648; set new sign bit
!!VRvv315&x3=0:Sy1; write if enabled

; Match count
!!VRv319&y1=x2:Sd1;

; Increment pointers
!!VRv315:Sdv318;

; step counter
!!VRx16&v316<=x16:S999; Is it last turn?

MODE7; convert 32 bit signed integers to n bit signed integers. Changes to Mode6 marked with ***
!!FU&x1<>7:E; ***
; copy actual variable
!!VRy1:Svv315; read
; Match count *** ->
!!VRv319&y1=x2:Sd1;
!!VRv315&x3<>0:Sdv318;
; step counter
!!VRx16&v316<=x16:S999; Is it last turn?
!!FU&x3<>0:E; exit, if write disabled -> ***

; convert
!!VRy90:S1460 +v317;
!!VRy91:Svy90 -1; select range
!!VRy90:-1;
!!VRy92:Svy90;select sign bit
!!VRy93:S-1 -y92; inverted mask for sign

!!VRy2:Sy1 &-2147483648; sign bit *** ->
!!VRy1:&y91 &y93; select range,(thus reset bit31,v317<=31), reset new sign bit
!!VRy1&y2<>0:|y92;set new sign bit
!!VRvv315:Sy1; write -> ***

; Increment pointers
!!VRv315:Sdv318;

* END of Bitwise Packer *

--------------------------------------------------------------------------------

:wink:


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2006 nov. 18 szomb., 23:41 
Avatar

Csatlakozott: 2005 nov. 23 szer., 20:07
Hozzászólások: 1099
Tartózkodási hely: Jászapáti/Jászberény
<OFF>
Legényanya:
-Csak tudnám, hogy mit jelentenek ezek a biz-baszok :lol:
</OFF>

_________________
Üdv. Fifi
KépR.I.P.
BordoMavi!!!


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2006 nov. 20 hétf., 12:37 
Avatar

Csatlakozott: 2005 aug. 16 kedd, 17:06
Hozzászólások: 2137
Tartózkodási hely: Dungeon
Talán WOG-szkriptek? :shock: 8) :lol: :lol: :lol:


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája: SZAVAZÁS
HozzászólásElküldve: 2006 dec. 03 vas., 21:25 
Avatar

Csatlakozott: 2004 márc. 10 szer., 14:16
Hozzászólások: 2375
Tartózkodási hely: 60
Csak pár gyors körkérdés: kit menyire zavar, ha
- a Heroes3-as karavánoknál a TP kerekítésre kerül (0.1% pontossággal)
- nem vihetnek magukkal Warlord's Banner-t
- karavánonként max. 1000 egység mehet?

Lehessen-e harci gépeket (War Machines) karavánnal küldeni?
Legyen-e lehetőség a karavánokat menet közben új célpontra irányítani?

Kicsit szűkösnek tűnik a 336 változóm, és a szükséges memóriaterület a válaszoktól függ.. Addig is amíg válaszoltok, megyek változókat kunyerálni..

_________________
Tuning eredmények:
https://picasaweb.google.com/doom3do/La ... directlink


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 márc. 01 csüt., 23:52 
Avatar

Csatlakozott: 2004 júl. 09 pén., 10:08
Hozzászólások: 78
Te Doom!

Rég jártam errefelé. Láttam ezt a böszme hosszú scriptet és eszembe jutott valami: szoktál te JÁTSZANI a H3-mal, vagy csak programozol és kipróbálod amit írtál.
Mert az elmúlt bő fél évben arra jöttem rá Heroes-ügyben, hogy egy szimpla ROE pályán is megszenved az ember, ha jól vannak letéve az egyszerű dolgok és király szórakozást nyújt 2-3 órára.
Minél több extrával rendelkezik a játékos, annál könnyebb egy pálya.

Persze észrevételem nem privát más is hozzászólhat. És A művet amit írtál, mint alkotást megtisztelem és megbecsülöm. Csak az értelmére, céljára, okára kérdeznék rá - ha szabad...
Általánosságban: miért is írunk scripteket egyáltalán?

DS


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája: RE: Dart Sidious
HozzászólásElküldve: 2007 márc. 02 pén., 20:45 
Avatar

Csatlakozott: 2004 márc. 10 szer., 14:16
Hozzászólások: 2375
Tartózkodási hely: 60
Szia!

Szoktam játszani. Az elmúlt fél évben legalább 7x.. :D
És legalább annyit debuggoltam, mint játszottam.
Maga a szkriptírás is elvett néhány száz órát.

Szkripteket részben ugyanazért írok, amiért játszok. Intellektuális kíhívás.
A jatékszabályok módosítása is egyfajta játék..
(van egy könyv, "Gödel-Escher-Bach, egybefont gondolatok birodalma", ebben szó esik egy meta-sakkról, ahol a pillanatnyi állás határozza meg az aktuális játékszabályokat. Negyedszerre olvasva még mindig tartogatott meglepetéseket!! Nagyon jó könyv, hosszú téli estékre.)
Másrészt van egy álmom "A JÁTÉK"-ról, és igyekszem a rendelkezésre álló eszközökkel megalkotni. Az is benne van a pakliban, hogy sokan örülnek az új szkripteknek.

A fentre bemásolt szkript egyébként bugos volt, de a következő verziója 15 óra debuggolás után megadta magát a sorsnak, és működött..
Az ERM debugger után jön a Karaván.. már alig várom.
Ezért.

Doom3d

_________________
Tuning eredmények:
https://picasaweb.google.com/doom3do/La ... directlink


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 márc. 03 szomb., 16:38 
Avatar

Csatlakozott: 2004 júl. 09 pén., 10:08
Hozzászólások: 78
Úgy tűnik, feltámasztottuk ezt a topicon...

A Gödel-könyvet majd megnézem. Amúgy sohasem gondoltam volna, hogy egy h3fórumban könyvajánlót is fogok olvasni...
Még egy kérdés: foglalkoztál már társasjáték-fejlesztéssel?
Az majdnem olyan jó, mint a programozás... Sőt ha igazán jó társasjátékot kreál az ember, hamar rájön, hogy gépen sokkal jobban működne. És nekiáll átültetni...
Apropó! H3-ból nem akar valaki táblás-kártyás játékot csinálni? Vagy már túl vagyunk rajta rég???


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 márc. 04 vas., 0:32 
Avatar

Csatlakozott: 2005 nov. 23 szer., 20:07
Hozzászólások: 1099
Tartózkodási hely: Jászapáti/Jászberény
DarthSidious írta:
Úgy tűnik, feltámasztottuk ezt a topicon...

A Gödel-könyvet majd megnézem. Amúgy sohasem gondoltam volna, hogy egy h3fórumban könyvajánlót is fogok olvasni...
Még egy kérdés: foglalkoztál már társasjáték-fejlesztéssel?
Az majdnem olyan jó, mint a programozás... Sőt ha igazán jó társasjátékot kreál az ember, hamar rájön, hogy gépen sokkal jobban működne. És nekiáll átültetni...
Apropó! H3-ból nem akar valaki táblás-kártyás játékot csinálni? Vagy már túl vagyunk rajta rég???


Volt próbálkozás de behalt... :x :cry:
De ha segítesz akkor újra indulhat az egész...

_________________
Üdv. Fifi
KépR.I.P.
BordoMavi!!!


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája: re:
HozzászólásElküldve: 2007 márc. 04 vas., 17:35 
Avatar

Csatlakozott: 2004 márc. 10 szer., 14:16
Hozzászólások: 2375
Tartózkodási hely: 60
DarthSidious írta:
Még egy kérdés: foglalkoztál már társasjáték-fejlesztéssel?


OFF: Vannak bizonyos szituációk, amikor az ember kétértelmű célzásokkal olyan irányban kívánja terelgetni az események sodrát, hogy a helyzet adta látens lehetőség társasjátékban realizálódjon.. bár ezt fejlesztői tevékenységnek eddig még nem hívtam :D
@ Fifi: miért is lépsz le? Sokat romlott a heroes oldal, de azért ennyire nem..

ON:
Újraírtam a Táltosfutást, és teljesen más kóddal sikerült reprodukálni a bugot, aminek a kiküszöbölése végett nekikezdtem.. :lol:
Viszont sikerült belerakni öt új hibát is. :lol: :oops: ;)
Az érzelmi viharok zavarják a mentális teret.

Megyek vissza debuggolni. :idea:

_________________
Tuning eredmények:
https://picasaweb.google.com/doom3do/La ... directlink


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája: WOG LIVE
HozzászólásElküldve: 2007 márc. 04 vas., 21:56 
Avatar

Csatlakozott: 2004 márc. 10 szer., 14:16
Hozzászólások: 2375
Tartózkodási hely: 60
A RÉGI SZÉP IDŐK EMLÉKÉRE, AMIKOR MÉG SOKAN ÍRTAK IDE ERM KÓDOKAT!!!
:D
Tesztelés közben:
--------------------------------------------------------------------------------

* Shamanic Running, Author: Doom3d, Hungary.
* Old name: Magic Arrow Adventure
* I have copied a few things from script 74, so thank You, Bonizag!

; Shamanic Running on adventure screen will give movement points for mana, or vice versa to your hero.
** Hint: May be useful on maps with banned Fly,(waterwalk) and Dimension door.

* Right clicking on spell button (main screen),
* Spellbook not needed, mana/movement checked. :)

; Changelog
*preview: v3.0 New mana converter function, New name, integration with other new Adventure spells
* ERT file with multiple language support. Combat screen and AI combat support. AI tuning rewritten in FU.
* Under construction.

* v2.6 Converter ratio displayed& New mana converter function, used for human players only. Bugfixes to v2.5
* Included Getbasicprimary macro to check basic primary skills
* (prevents movement for nothing bug, playing with primary skills+artifacts)


* v2.5 Multi-language support, ERTifying, changed interface, movement-> mana conversion. AI spend 0 mana.
* (not released, buggy)

* v2.42 message disabling now works independently for players, not globally
* v2.41 Final option number: 332 for Neutral spells
* v2.4 Simplified AI part. AI spend less mana points.
*Bug fix: new data carrier between OB1 and OB2. v28 (temporary)->v80 (exclusive)

* v2.3 AI Tuning for magic dwell&spring usage
*v2.2 Conversion factor decreased according to intelligence skill level of hero
* AI factor increased
*v2.1 magic arrow not needed..
* Version2.0: AI support added, plus now it works with 1..1000 mana.
* V1.0: "1000 mp for 100 mana" option, only for human players. "Magic Arrow Adventure"
* May be casted more, then once a day. Disabled for multiplayer.

** OK, let`s do something..

------------------------------
; AI section

; Main Entry point(AI)
!?TM1;
!!UN:P332/?y-1; checks if option is enabled.
!!FU &y-1=0:E; exit if not.

!!OW:I-1/?g/?h;get AI/human +killed or alive * g=1 AI, h=1 killed
!!FU |g=0/h=1:E; exit if human or killed

!!OW:H-1/600; //get heroes list
* max.48 towns+8 adventure heroes= 56, so v600-v656 are used.
!!FU &v600=0:E; exit if this player actually don`t have any hero.

!!UN:J2/?v27; check player difficulty level (0-4)


; V34 FU name multiplex
!!VRv34:S0; "0" for Magic Arrow adventure * do not modify v34 inside this script

!!DO642/1/v600/1:P; //iterate through heroes and cast magic arrow for AI player
* END Main(AI)


!?FU642&v34=0; actual hero setup FUxxx1 x16 rel. pointer to hero ID adress, v27=difficulty level
; v34=0 for for Magic Arrow adventure, do not modify inside DO loop

!!VRy1:S600 +x16; set Hero ID pointer
!!VRg:Svy1; hero ID
!!HEg:I?v24/1 S24/?v28; Mana check w/o redraw , intelligence check
!!VRy1:Sv24 :10; one random number will be called for every package of 10 mana.
* will not cast below 10 mana
!!VRv25:S0; reset
!!DO643/1/y1/1:P=v25; <- v25 will be changed , call RND numbers
!!VRv25::10; division by 10, see FU xxx2
* 1 package is 10 mana, 1% *10=0.1, so final result have to be divided by 10.

; completing AI request. rem: Hero ID:g, mana present:v24, mana to be used:v25
!!VRv25 &v25>v24:Sv24; check if mana is enough? Set to actual mana if it is not.

* Int check hero:g

!!VRy3:Sv28 +4; intelligence correction for none, basic, advanced. simplified by 25.
!!VRy3&v28=3: +1; correction for expert
!!VRy2:Sv27 *2 +12; modify conversion factor for AI with player difficulty level.See below.

!!VRv26:Sv25 *y2 *4 :y3; convert mana to movement points, without tuning protection :)
* means 12 for easy, 20 for impossible level. 120-200% relative to human.
* Please remember, that:
*- AI will never use more, then 70% of total mana, ~35% on average. Usage is random.
*- AI correction will be decreased, when we will have a better AI routine..

!!VRv25::-4; invert value // AI tuning!!
!!HEg:Wdv26; finally do the job. ** mana will not ne removed- Shamanic Dance active
** END FUxxx1

!?FU643&v34=0; Generate RND numbers FUxxx2

!!VRv25:R70; add next RND value %
!!FU:E;
** END FUxxx2
------------------------------
AI tuning for Shamanic Running: Magic well & Magic spring usage (v2.3)
; Magic well
!?OB49&-1000; starts if AI (testing: &1000 with human;-1000 ai)
!!UN:P332/?y-1; checks if option is enabled.
!!FU &y-1=0:E; exit if not.
!!HE-1:I?v80/1 IS0; standard method :)) *v80

!$OB49&-1000; (testing: &1000 with human)
!!UN:P332/?y-1; checks if option is enabled.
!!FU &y-1=0:E; exit if not.
!!HE-1:I?v27/1 S24/?v29; check mana+ intelligence level
!!VRv26:S0;

* Int check he: -1
!!VRy3:Sv29 +4; intelligence correction for none, basic, advanced. simplified by 25.
!!VRy3&v29=3: +1; correction for expert
!!VRv26&v27>0:Sv80 *40 :y3; convert mana to movement points *v80
!!HE-1:Wdv26; add movement points or 0 if dwell didn't work
!!HE-1&v26=0:Idv80; gives back original mana if dwell didn't work *v80

; Magic spring
!?OB48&-1000; starts if AI (testing: &1000 with human, -1000 ai)
!!UN:P332/?y-1; checks if option is enabled.
!!FU &y-1=0:E; exit if not.
!!HE-1:I?v80/1 IS0; standard method :)) *v80

!$OB48&-1000; (testing: &1000 with human)
!!UN:P332/?y-1; checks if option is enabled.
!!FU &y-1=0:E; exit if not.
!!HE-1:I?v27/1 S24/?v29; check mana+ intelligence level
!!VRv26:S0;

* Int check he:-1
!!VRy3:Sv29 +4; intelligence correction for none, basic, advanced. simplified by 25.
!!VRy3&v29=3: +1; correction for expert
!!VRv26&v27>0:Sv80 *40 :y3; convert mana to movement points *v80
!!HE-1:Wdv26; add movement points or 0 if spring didn't work
!!HE-1&v26=0:Idv80; gives back original mana if spring didn't work *v80
------------------------------
* AI tuning for Town entry (mana vortex)
!?OB98/5&-1000; starts if AI (testing: &1000 with human, -1000 ai)
!!UN:P332/?y-1; checks if option is enabled.
!!FU &y-1=0:E; exit if not.
!!HE-1:I?v80/1 IS0; standard method :)) *v80

!$OB98/5&-1000; (testing: &1000 with human)
!!UN:P332/?y-1; checks if option is enabled.
!!FU &y-1=0:E; exit if not.
!!HE-1:I?v27/1 S24/?v29; check mana+ intelligence level
!!VRv26:S0;
* Int check he:-1
!!VRy3:Sv29 +4; intelligence correction for none, basic, advanced. simplified by 25.
!!VRy3&v29=3: +1; correction for expert
!!VRv26&v27>0:Sv80 *40 :y3; convert mana to movement points *v80
!!HE-1:Wdv26; add movement points or 0 if mana vortex didn't work
!!HE-1&v26=0:Idv80; gives back original mana if mana vortex didn't work *v80
------------------------------

; Human section

; Main Entry point (Human)
; copy from ERM Script 74 opt.74.. watchdog module
!?CM0;
!!UN:P332/?y-1 P185/?y-99; checks if option is enabled + message disabling
!!FU&y-1=0:E; exit if not
!!CM:I?f; //vf: where we clicked
!!OW:A-1/?g C?y-1 Gy-1/?q; //selected hero in vg //get current player //multiplayer check
!!IF:V791/1; // init
!!IF&f=8/g>=0/q=1:V791/0;
** Thank You, Bonizag!

; original part
!!FU &791:E; Just for to have uniform solution..

!!CM:R0; //don't show original message
!!HEg:I?v24/1 S24/?v27 W?v2; checks mana and intelligence *** plus movement bugfix:/?v2 -> ?v2 :)))
!!IF:V5/0; reset flag
!!IF&v24>0|v2>0:V5/1; min. 1 mana or movement, actual mana in v24

[Check if Adventure spell messages are disabled]
!!VRy-2:S1460 +y-1;
!!VRy-100:Svy-2;
!!VRy-3:Sv82; [Set y-3 to v82]
!!VRy-3:&y-100; [Check if message is disabled for current player: y-1] = means disabled
!!IF:V6/1; messages ON
!!IF&y-3=y-100/y-99=1:V6/0 ; 0, if disabled, 1 if enabled.. set if op. 185 is running..

[Check Language]
!!VRv10:Sv261 &y-100; [Read bit value]
!!VRv10&v10<>0:S1; offset if language1

!!VRv9:S332000 +v10;
!!IF&-5/6:M1/zv9;
!!CM&-5/-6:R1; show original message if no erm message
!!FU |-5:E;

; dialogue setup

*actual conversion factor
!!VRv34:S-1;
!!FU643:Pg/0/d0/d0/?y-90/?y-91;
!!VRz2:M3/y-91;
!!VRz3:Sz2; leading zeroes
!!VRz3&y-91<100:S^0^+z2;
!!VRz3&y-91<10:S^00^+z2;

* z vars
!!VRv9:S332002 +v10;
!!VRz4:S^^;

!!VRz5:Szv9;
!!VRv9:Sd2;
!!VRz6:Szv9;
!!VRv9:Sd2;
!!VRz7:Szv9;

; dialogue box
!!IF:D64/5/6/7/4/4/4/4/4/4/4/4/4/4/4/4 F64/4/4/4/4/1 E1/64; [Set up dialogue box] [Display dialogue box]
* answer in z1, checkbox flags in v1

; extract reply
!!VRv3:S0;
!!VRv3:Vz1;
!!FU&v3=0:E; If You don`t like cookies, you won`t have them.

; completing request. rem: Hero ID:g,mana to be used:v3
!!VRv34:S-1;
!!FU643:Pg/v3;

!!FU:E;

-----------------------------------
* Neutral spells - FU library

* Shamanic Running - Mana Converter
* Input: x1=hero ID, x2 requested mana to be used (signed integer),
* return values, ?x3=mana and ?x4=movement, ?x5&?x6: conversion factor integer and reminder
* FU multiplex: v34= -1

!?FU643&v34=-1;
; collect base data
!!HEx1:I?y1 F?y2/?y3/?y4/?y95 S24/?y6 X?y7/?y8/?y9/?y9/?y9/?y9/?y9 W?y9 O?y10 E?y11/?y12;
!!OW:Iy10/?y14;
!!VRy15&y7=0/y8=24:S1;
* y1=mana, y95=Knowledge with artifacts, intelligence=y6,int spec:?y15 , y9=movement, owner, AI:?y14, y12=level

* Get basic Primary
!!FU454:Px1/?y2/?y3/?y4/?y5;
!!VRy2&y2<0:S0; failsafe
!!VRy3&y3<0:S0;
!!VRy4&y4<1:S1;
!!VRy5&y5<1:S1; repair values, if bug found

* ? AI hero &x2=0 -> RND call

; conversion factor
!!VRy20:Sy2 +y3 +y4 +y5; T value (total primary)
* converter ratio=(T-K)/(T+8K)*static value
* best ratio with K/T=0.25, where (T-K)/(T+8K)=1/4, so 4(T-K)/(T+8K) used, to have normalised values
* low level bonus: 100/(A+T)
!!VRy21:Sy20 -y5 *4; 4(T-K)
!!VRy22:Sy5 *8 +y20; T+8K
!!VRy23:Sy20 +15; 100/(A+T) tuning for low level heroes

!!VRy30:S25 *y6; base intelligence %
!!VRy30&y6=3:S100; correction for expert
!!VRy31:Sy15 *5 *y12 +100 *y30 +10000; % with speciality, (none= 10K, exp.=20K..), 4 digit precision, 10K/this value

!!UN:J2/?y32; check player difficulty level (0-4)
!!VRy33:Sy32 *2 +12; static AI factor (12-20) * AI factor
!!VRy33&y14=0:S10; static human factor * HU factor

!!VRe1:Sy21 :y22 *100 :y23 *10000 :y31 *y33; actual conversion factor


!!IF:M^y21:%Y21, y22:%Y22, y23:%Y23, y31:%Y31, y33:%Y33, hero int. spec.:%Y15, level:%Y12^; teszt


; display conversion factor =x5.x4
!!VRe2:S1000 *e1;
!!VRy39:Se2;
!!VRx5:Sy39 :1000; interger
!!VRx6:Sy39 %1000; 3 digit reminder

; min/max checking
* max1: max. mana, max2: max. movement, N1=act. mana, and N2=act. movement,
* x: requested mana to be used, y mana change, z movement change, R mana conversion factor
* x>0: -y= min{ N1; x), z= R*y
* x<0: z= min{ R*(MAX1-N1) ; N2 ; R*(-x) } =MAX {-R*(MAX1- N1);-N2;Rx} , except: i.f MAX1<N1, t.hen no change.
* x=0 no change
** max2: no movement limitation, not used

* x>0, mana->movement
!!VRy40:Sy1; actual mana
!!VRy40&x2<y1:Sx2; or requested mana?
!!VRe3:Sy40 *e1;
!!VRy45:Se3; movement added
!!VRy40: *-1; MANA PENALTY

* x<0, movement->mana
!!VRe3:Sy95 *10 *y31 :10000 -y1 *-1; -(max1 -n1)= -(actual Knowledge *10 *intelligence modifier -actual mana)
!!VRy50:Se3; prevent overflow around 100K max. mana and above, up to 2G mana (level 10K+ hero bug :)
!!VRy50&y50>0:S0; set to 0, if max1<n1 (max. mana limit reached)
!!VRy51:Sx2;
!!VRy50&y50<y51:Sy51; Min{ (max1-n1 ; -x} = Max { -(max1-n1) ; x} =temp
!!VRe3:Sy9 *-1 :e1; n2 converted to mana * -1
!!VRy51:Se3;
!!VRy50&y50<y51:Sy51; Max {temp, -N2/R}
!!VRe3:Sy50 *e1;
!!VRy55:Se3; MOVEMENT PENALTY
!!VRy50:*-1; mana added

; set changes
* mana
!!VRx3:S0; x2=0
!!VRx3&x2>0:Sy40;
!!VRx3&x2<0:Sy50;
* movement
!!VRx4:S0; x2=0
!!VRx4&x2>0:Sy45;
!!VRx4&x2<0:Sy55;


!!HEx1:Idx3 Wdx4 ; finally do the job.


!!HEx1:I?y99 W?y100;
!!IF:M^x3:%X3, x4:%X4, y40:%Y40, y45:%Y45, y50:%Y50, y55:%Y55, e1:%E1 x5x6:%X5.*%X6, I:%Y99, W:%Y100^; teszt

--------------------------------------------------------------------------------

** All thing has come to an end ...

_________________
Tuning eredmények:
https://picasaweb.google.com/doom3do/La ... directlink


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 márc. 05 hétf., 10:33 
Avatar
ISTEN

Csatlakozott: 2005 aug. 08 hétf., 9:30
Hozzászólások: 1096
Tartózkodási hely: Pécs
sziasztok!

doom3d: minden elismeresem a tied. amekkora munkat es idot beleolsz temaba, az nem semmi! en is probalkozom, de ennyire nincs energiam...
koszonjuk!

kiki


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 márc. 28 szer., 19:19 

Csatlakozott: 2006 ápr. 10 hétf., 7:36
Hozzászólások: 5
Hello mindenkinek!

Röviden, van egy pályám, amire kellene három script. Mivel egyáltalán nem értek ezekhez a Scriptekhez ezért kérek egy kis segítséget, plz. 3 script okoz nekem jelenleg problémát:

1.: Hogy lehetne azt megoldani, hogy ha a hősünk elér egy bizonyos xy koordinátára és akkor rögtön vége lesz a játéknak, speciel győztesként?

2.: A második script egy picit nagyobb fejtörést okozott nekem. Ha a hősunk, tegyük fel bemegy egy tavern-be, esetleg egy fekete piacra, vagy ha felvesz egy bizonyos arifact-ot, akkor az összes kulcssátor, ameyiket meglátogatott, már nem lesz többé "visited".

3.: Az utolsó problémám, a játékban elheyezett objektumokkal van. Ha bármelyik hős, elvégzi a küldetést adó "gomba"vagy "fa" küldetését, akkor eltűnjön a mellette lévő hegy, vagy egy objektumot, mondjuk egy fát arréb rak?

Egyáltalán megoldhatóak ezek a problémák, vagy felejtsem el ezeket a kéréseket? Előre is milliárd köszi, annak aki ezeket megoldja, sőt annak is aki csak elgondolkozik ezen...


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája: re: Lioneo
HozzászólásElküldve: 2007 márc. 29 csüt., 20:06 
Avatar

Csatlakozott: 2004 márc. 10 szer., 14:16
Hozzászólások: 2375
Tartózkodási hely: 60
1.: Hogy lehetne azt megoldani, hogy ha a hősünk elér egy bizonyos xy koordinátára és akkor rögtön vége lesz a játéknak, speciel győztesként?

Lepakolsz egy OB-t ( vagy eventet) az adott pozícióra. A hozzá tartozó triggernél használd a !!HE:O és !!UN:Q parancsokat.

2.: A második script egy picit nagyobb fejtörést okozott nekem. Ha a hősunk, tegyük fel bemegy egy tavern-be, esetleg egy fekete piacra, vagy ha felvesz egy bizonyos arifact-ot, akkor az összes kulcssátor, ameyiket meglátogatott, már nem lesz többé "visited".
A triggernél használd az !!OW:K -t. Az arti felvételéhez az artit rakd egy eventbe. (obeliszkkel is megy a trükk, UN:L)

3.: Az utolsó problémám, a játékban elheyezett objektumokkal van. Ha bármelyik hős, elvégzi a küldetést adó "gomba"vagy "fa" küldetését, akkor eltűnjön a mellette lévő hegy, vagy egy objektumot, mondjuk egy fát arréb rak?
Az !!UN:D-vel teheted járhatóvá a vizet, az !!UN:I-vel tudsz objektumot lepakolni, és az !!UN:O -val törölsz. Arréb rakni úgy tudod, hogy törlés után újra kipakolod.

A szkript konkrét megírását rád bízom.

_________________
Tuning eredmények:
https://picasaweb.google.com/doom3do/La ... directlink


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 márc. 30 pén., 13:54 

Csatlakozott: 2006 ápr. 10 hétf., 7:36
Hozzászólások: 5
Mégegyszer köszönöm doom3d! Ezek nagy segítséget jelentenek, mégha egy scriptsort se tudnék összedobni, ezt a nagy segítséget csak hálálni tudom! KÖSZÖNÖM!!! :lol: kicsit se viszem túlzásba... :)


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 ápr. 28 szomb., 14:26 

Csatlakozott: 2007 ápr. 28 szomb., 11:19
Hozzászólások: 6
Sziasztok!

A következő kérdésem lenne: hogyan tudom elérni, hogy egy script akkor aktiválódjon, ha egy várat elfoglaltak, akkor viszont azonnal. Az elképzelésem a következő:

Négy játékos (piros, kék, narancs, lila) egy-egy vár. Ha egy játékos elfoglalja egy másik játékos kastélyát, akkor megszerzi az ahhoz a színhez tartozó Keymaster's Key-t, és kap egy üzenetet ("Elfoglaltad a várat! Tiéd a [...] kulcs!")

Ha a várat ezután egy másik játékos (de nem az eredeti tulajdonos) foglalja vissza, ő is megkapja az üzenetet, valamint a kulcsot, ami ahhoz a várhoz tartozott eredetileg.

Ha a várat az eredeti tulajdonosa foglalja vissza, ő nem kap üzenetet, elvégre neki már megvolt a kulcs amúgy is. (Az elején automatikusan mindenki megkapja a sajátját, ezt sikerült megoldanom.)

Ez lenne az alapelgondolás. Sajnos én csak annyit tudtam elérni, hogy egy triggerrel minden nap elején ellenőrizze a játék, hogy kié az adott vár, és annak adjon egy kulcsot, de szerintem kell, hogy legyen ennél egyszerűbb megoldás is.

----

Ennél egy kicsit bonyolultabb elképzelésem is van, ha a scriptelők szeretik a fejtörőket. : ) A bonyolultabb elképzelés az, hogy az adott kulcs mindig annál a játékosnál van, akié a vár, a többiek viszont elvesztik, még ha korábban el is foglalták a várat. Ezt a nap eleji kóddal elvileg meg tudnám oldani, viszont az is kellene, hogy egy vár elfoglalásánál azonnal megkapja az illető játékos a kulcsot (és az üzenetet), míg a vár előző tulajdonosa elveszíti a kulcsot.

Ha a várat az eredeti tulajdonosa foglalja vissza, akkor kap egy üzenetet ("Gratulálok! Sikerült visszafoglalnod a váratd"), visszakapja a kulcsát (a várbitorló természetesen elveszíti), sőt még kap 5000 Exp-t is a hősiességéért.


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 ápr. 28 szomb., 14:29 

Csatlakozott: 2007 ápr. 28 szomb., 11:19
Hozzászólások: 6
Sziasztok!

A következő kérdésem lenne: hogyan tudom elérni, hogy egy script akkor aktiválódjon, ha egy várat elfoglaltak, akkor viszont azonnal. Az elképzelésem a következő:

Négy játékos (piros, kék, narancs, lila) egy-egy vár. Ha egy játékos elfoglalja egy másik játékos kastélyát, akkor megszerzi az ahhoz a színhez tartozó Keymaster's Key-t, és kap egy üzenetet ("Elfoglaltad a várat! Tiéd a [...] kulcs!")

Ha a várat ezután egy másik játékos (de nem az eredeti tulajdonos) foglalja vissza, ő is megkapja az üzenetet, valamint a kulcsot, ami ahhoz a várhoz tartozott eredetileg.

Ha a várat az eredeti tulajdonosa foglalja vissza, ő nem kap üzenetet, elvégre neki már megvolt a kulcs amúgy is. (Az elején automatikusan mindenki megkapja a sajátját, ezt sikerült megoldanom.)

Ez lenne az alapelgondolás. Sajnos én csak annyit tudtam elérni, hogy egy triggerrel minden nap elején ellenőrizze a játék, hogy kié az adott vár, és annak adjon egy kulcsot, de szerintem kell, hogy legyen ennél egyszerűbb megoldás is.

----

Ennél egy kicsit bonyolultabb elképzelésem is van, ha a scriptelők szeretik a fejtörőket. : ) A bonyolultabb elképzelés az, hogy az adott kulcs mindig annál a játékosnál van, akié a vár, a többiek viszont elvesztik, még ha korábban el is foglalták a várat. Ezt a nap eleji kóddal elvileg meg tudnám oldani, viszont az is kellene, hogy egy vár elfoglalásánál azonnal megkapja az illető játékos a kulcsot (és az üzenetet), míg a vár előző tulajdonosa elveszíti a kulcsot.

Ha a várat az eredeti tulajdonosa foglalja vissza, akkor kap egy üzenetet ("Gratulálok! Sikerült visszafoglalnod a váratd"), visszakapja a kulcsát (a várbitorló természetesen elveszíti), sőt még kap 5000 Exp-t is a hősiességéért.

----

SZERK: Ne haragudjatok, kétszer ment el a hsz, az előbb valami hiba folytán azt írta ki, hogy "Nincsenek új hozzászólások ebben a témában" és nem is láttam a sajátomat.


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 ápr. 30 hétf., 19:02 
Avatar

Csatlakozott: 2004 márc. 10 szer., 14:16
Hozzászólások: 2375
Tartózkodási hely: 60
Első nekifutásra azt mondanám, hogy vegyük elő a jó öreg !?OB triggert.

Ha egy hero belép egy várba, akkor megnézed, hogy melyik színhez tartozik.

Ehhez vegyük még hozzá a !?BR1 triggert arra az esetre, ha várfoglalás után nem lépsz be.. Vagy írd bele az első napi event szövegébe, hogy a kulcs megszerzéséhez be kell lépni a várba. :)

A fejtörős verzió nem nehezebb. Igaz, elsőre nem emlékeztem a pontos parancsra.. Az !!OW:K -val lehet beállítani, hogy a keymaster's tent volt-e látogatva. Ha beikszeled, hogy nem, akkor elvileg a border gate zárva lesz.
(nem teszteltem) Ezzel megúszhatod a passability-s játékot is.

Kétszeri üzenetküldés: néha az üzenet az előző oldal végére kerül, de az AI már a következőn keresi. Szólj a moderátornak pü-ben, hogy törölje a 2. üzenetet, vagy szerkeszd át 1 sorosra.

Megyek, megnézem a HC-t. ;)

_________________
Tuning eredmények:
https://picasaweb.google.com/doom3do/La ... directlink


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 máj. 05 szomb., 15:53 

Csatlakozott: 2007 ápr. 28 szomb., 11:19
Hozzászólások: 6
Köszi! Azt hiszem, így működni fog a dolog.

A következő kérdésem már konkrét scripttel kapcsolatban van. : ) A következőt akartam megvalósítani:

Ha egy játékos kitüntetett főhőse meghal, akkor a következő kör elejétől "feltámad", ismét megjelenik a játékos irányítása alatt. Ezt a következő scripttel próbáltam elérni:

ZVSE

!#TM1:S1/999/1/255; -> Minden kör elején
!?TM1;
!!VRv37:S8;
!!HE14:O?v37; -> A v37 változóba a program elmenti a hős tulajdonosának számát.
!!UN:I14/12/0/34/14/00/1&v37=-1; -> Ha a v1 változó -1 (tehát a hős senkinek a tulajdonában sincs), akkor a hőst elhelyezi a térkép egy bizonyos pontján.

Na, erre a kódra teljesen kiakadt, gondolom a &v1=-1 miatt, mert biztos nem így kell megmondani, hogy ezt csak akkor csinálja, ha a v1=-1. Sebaj, megpróbáltam úgy, hogy be kell lépni egy bizonyos épületbe. Így a kódom:

ZVSE

!#TM1:S1/999/1/255; -> Minden kör elején
!?TM1;
!!VRv37:S8;
!!HE14:O?v37;

!?OB15/12/0&v37=-1; -> Ha belépek és a v37 értéke -1
!!UN:I14/12/0/34/14/00/1; -> Leteszi a hőst a megfelelő helyre.

Na, erre méginkább kiakadt szegény, mondván, hogy nem ismer ilyen objektumot, aztán lepakolt egy nagy piros MON-t, amit még csak meg se tudtam támadni.

A kérdésem az lenne, hogy hol rontottam el, illetve hogy megoldható-e valahogy ez a kód? Köszi!


Vissza a tetejére
 Profil  
 
  Offline
 Hozzászólás témája:
HozzászólásElküldve: 2007 máj. 05 szomb., 16:00 

Csatlakozott: 2007 ápr. 28 szomb., 11:19
Hozzászólások: 6
[b]Hoppá, már meg is van. O: ) Elolvastam, hogy inkább a HE:P parancsot kéne használni. Jippee!

ZVSE

!#TM1:S1/999/1/255;
!?TM1;
!!VRv37:S8;
!!HE14:O?v37;

!?OB15/12/0&v37=-1;
!!HE14:P14/12/0;
!!HE14:O4;

Ez most gyönyörűen működik. Megoldható valahogy az első változat egyébként? Mármint hogy ne kelljen ehhez belépni az épületbe.


Vissza a tetejére
 Profil  
 
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása Hozzászólás a témához  [ 238 hozzászólás ]  Oldal Előző  1 ... 4, 5, 6, 7, 8, 9, 10 ... 12  Következő

Időzóna: UTC + 1 óra [ nyi ]


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég


Nem nyithatsz témákat ebben a fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.

Keresés:
Ugrás:  
cron
Powered by phpBB® Forum Software © phpBB Group
Imperium - Modified by Rey phpbbmodrey
Magyar fordítás © Magyar phpBB Közösség