![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 12.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
@EDIT: NAPRAWIONE ,lecz jeśli ktoś wie dlaczego tak się dzieje prosiłbym o wytłumaczenie!
Jak naprawiłem: Zdefiniowałem 2 zmienną (arrka2) i zrobiłem pętlę na kolumny arrka. później dałem arrka2[cs] = arrka[c]; i jest okey. ########################### Witam! Piszę sobie skrypt w NodeJS (w którym piszemy w JavaScript) i mam mianowicie taki problem iż przy zmianie pozycji x lub y w tablicy MapMobs zmienia również dane w tablicy MapMobsOrginal. Sposób tworzenia tablicy MapMobsOrginal i MapMobs: Kod var i = Array(); for(c in MAPMOBS) { if(i[MAPMOBS[c]['Map_ID']] == undefined) i[MAPMOBS[c]['Map_ID']] = 0; if(MapMobs[MAPMOBS[c]['Map_ID']] == undefined) MapMobs[MAPMOBS[c]['Map_ID']] = {}; if(MapMobsOrginal[MAPMOBS[c]['Map_ID']] == undefined) MapMobsOrginal[MAPMOBS[c]['Map_ID']] = {}; //MapMobs - my array //MAPMOBS - MySQL Array var kn; for(ka in Mobs) { if(Mobs[ka]['Id'] == MAPMOBS[c]['Mob_ID']) { kn = ka; break; } } var arrka = { '0': i[MAPMOBS[c]['Map_ID']]+1, //Id '1': 1, //Hp Mobs[kn]['Hp'] '2': MAPMOBS[c]['x'], //x '3': MAPMOBS[c]['y'], //y '4': Mobs[kn]['Name'], //Name '5': Mobs[kn]['Level'], //Level '6': Mobs[kn]['Hp'], //Max-Hp '7': 'WALKING', //What he do '8': MAPMOBS[c]['Mob_ID'], //Mob Id in General '9': MAPMOBS[c]['Id'] //Mob Id in Game }; //jak tu zmieniasz to pamiętaj o lini ok. 387 w nw_functions MapMobs[MAPMOBS[c]['Map_ID']][i[MAPMOBS[c]['Map_ID']]] = arrka; MapMobsOrginal[MAPMOBS[c]['Map_ID']][i[MAPMOBS[c]['Map_ID']]] = arrka; i[MAPMOBS[c]['Map_ID']]++; } To jak zmieniam x i y nie ma znaczenia ,ale wrzucę: (stworek nie może się ruszyć więcej niż o 2 pola od miejsca w którym został utworzony (czyli max zmiana x o 2 i y o 2) Kod var MobsPosChange = setInterval(function() { for(a in MapMobs) { if(a == 0 || a == 2) continue; //S- tam jakies moby. 20% szansy na ruch : //Rozpier... tablicę: var nox = MapMobs[a]; for(b in nox) { var Mob = nox[b]; if(Mob[7] == 'WALKING') { //console.log('Split for map: '+a+'\nMobKey: '+b+'\nMob Id: '+Mob[0]); // if(rand(1,2) == 1) { // //Okey lecim. //Wybierz w jakim kierunku : 2 3 var directs=Array('',true,true,true,true); //żaden, góra, dół, lewo, prawo var Mob2= MapMobsOrginal[a][b]; // 3 - y, 2 - x if(parseInt(Mob[3]) == parseInt(Mob2[3])-2) directs[1]=false; //Nie moze isc do gory if(parseInt(Mob[3]) == parseInt(Mob2[3])+2) directs[2]=false; //Nie moze isc do dolu if(parseInt(Mob[2]) == parseInt(Mob2[2])-2) directs[3]=false; //Nie moze isc do lewo if(parseInt(Mob[2]) == parseInt(Mob2[2])+2) directs[4]=false; //Nie moze isc do prawo var i = 1; console.log(directs); console.log("Up: "+parseInt(Mob[3])+' == '+(parseInt(Mob2[3])-2)); console.log("Down: "+parseInt(Mob[3])+' == '+(parseInt(Mob2[3])+2)); console.log("Left: "+parseInt(Mob[2])+' == '+(parseInt(Mob2[2])-2)); console.log("Right: "+parseInt(Mob[2])+' == '+(parseInt(Mob2[2])+2)); console.log("############################"); for(i>0;i<=2;) { var direct = rand(1,4); if(direct == 1 && directs[1] == true) { MapMobs[a][b][3]--; break; } //Up if(direct == 2 && directs[2] == true) { MapMobs[a][b][3]++; break; } //Down if(direct == 3 && directs[3] == true) { MapMobs[a][b][2]--; break; } //Left if(direct == 4 && directs[4] == true) { MapMobs[a][b][2]++; break; } //Right } // } } //Tu daj nową warto console.log(MapMobsOrginal); } for(sendall in CLIENTS_MAP[a]) { if(CLIENTS_MAP[a][sendall] != undefined) { CLIENTS_MAP[a][sendall].emit('map', {'what': 'MobsOnMap', 'data': MapMobs[a]}); } } } }, 10000); //TRUE - 10000 Jeśli ktoś czegoś nie rozumie to wytłumaczę (IMG:style_emoticons/default/wink.gif) . Wielkie dzięki za pomoc! Jeszcze dorzucę jak wygląda to z poziomu konsoli: (IMG:http://s3-eu-west-1.amazonaws.com/screenshooter-legacy/ed-lravcwhfletcwgzdmdkh.jpg) tam gdzie mamy Up/Left/Right/Down:.... to po lewej jest jego aktualna koordynata x lub y ,a po prawej stronie jest wartość stała! Ten post edytował Kongo 22.12.2013, 17:55:42 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 15:08 |