Jump to content

[REZOLVAT] Problema War Vehicle


TSN
 Share

Recommended Posts

Username: CLOVNU
Problema întălnită: Cand dau /attack pe un turf nu imi pune toate vehicule-le la war, altele raman in virtual 0. Poze: https://imgur.com/a/eLneecH
Detalii despre problemă: am detaliat mai sus.
Ce ai încercat să faci înainte să postezi?: nimic
Cod sursă (recomandat pastebin.com) :  https://pastebin.com/ijawKTiy
Alte detalii:

?imw=5000&imh=5000&ima=fit&impolicy=Lett

Link to comment
Share on other sites

Acum 8 ore, L0K3D a spus:

Unde ii setezi jucatorului VW = turfID? Apropo, verifica daca toate masinile sunt ale factiunii respective.

Vehicule-le apartin factiunii respective. 

 

			if(IsAMember(i)) {
				if(InWar[PlayerInfo[i][pMember]] == 1) {	
					new faction = PlayerInfo[i][pMember];
					for(new wi = 1; wi < sizeof(TurfInfo);wi++) {
						if((WarInfo[wi][wFaction] == faction) || (WarInfo[wi][wAttacker] == faction)) {
							new attackers = WarInfo[wi][wAttacker];
							new defenders = WarInfo[wi][wFaction];
							new uciderii = 0;
							uciderii += ucideri[i][wi];
							new decesee = 0;
							decesee += decese[i][wi];
							new Float: atscore = 0.0;
							new Float: defscore = 0.0;
							atscore = WarScoreF[attackers][wi];
							defscore = WarScoreF[defenders][wi];						
					
							if(playerDeath[i] == 0 && GetPlayerInterior(i) == 0 && IsAMember(i) && GetPlayerVirtualWorld(i) == 0 && PlayerInfo[i][pWantedLevel] == 0 && PlayerInfo[i][pJailTime] == 0) {						    
								SetPlayerVirtualWorld(i, wi);
								format(string, sizeof(string), "Ai fost teleportat in virtual world-ul %d deoarece mafia ta este intr-un war.", wi);
								SCM(i, COLOR_YELLOW, string);
							}

							if(WarInfo[wi][wFaction] == faction)
							{
								format(string, sizeof(string), "Turf: %s (%d)~n~%s %.1f - %.1f %s~n~Ucideri: %d Decese: %d Scor: %d~n~Secunde pe turf: %d~n~Timp war: ~y~~h~%s~w~~h~",
								TurfInfo[wi][zName],wi,FactionName(attackers),atscore,defscore,FactionName(defenders),
								uciderii, decesee, uciderii-decesee, WarSeconds[i], CalculeazaTimp2(WarInfo[wi][wTime]));
							}
							if(WarInfo[wi][wAttacker] == faction)
							{
								format(string, sizeof(string), "Turf: %s (%d)~n~%s %.1f - %.1f %s~n~Ucideri: %d Decese: %d Scor: %d~n~Secunde pe turf: %d~n~Timp war: ~y~~h~%s~w~~h~",
								TurfInfo[wi][zName],wi,FactionName(attackers),atscore,defscore,FactionName(defenders),
								uciderii, decesee, uciderii-decesee, WarSeconds[i], CalculeazaTimp2(WarInfo[wi][wTime]));
							}							
						}
					}
					PlayerTextDrawSetString(i, WarTime, string);
					PlayerTextDrawShow(i, WarTime);							
				}

 

?imw=5000&imh=5000&ima=fit&impolicy=Lett

Link to comment
Share on other sites

Acum 2 ore, L0K3D a spus:

Fa un debug ca sa vezi ID-ul fiecarei masini ce apartine factiunii din care faci parte si vezi daca rezultatul corespunde.

Corespunde cu toate.

Edited by CLOVNU

?imw=5000&imh=5000&ima=fit&impolicy=Lett

Link to comment
Share on other sites

Acum 20 ore, L0K3D a spus:

Atunci totul ar trebui sa mearga conform planului, verifica ce ti-a scapat.

Pai si totusi de unde drq provine problema... Am observat ca la unele mafii imi pune nu mai 3 vehicule in virtual-ul warului si la altele 4-5 dar nu toate.

?imw=5000&imh=5000&ima=fit&impolicy=Lett

Link to comment
Share on other sites

Vad ca functia SetVehicle e in gamemode-ul burned, inlocuieste functia ta cu cea de mai jos si va trebui sa functioneze corect:

function SetVehicle(fid, turf) {
    for(new v = 0; v < MAX_SVEHICLES; v++) {
        if(ServerVehicles[v][vFaction] == fid) SetVehicleVirtualWorld(ServerVehicles[v][vSpawned], turf);
    }                   
    return 1;
}

 

Link to comment
Share on other sites

Scuze de dublu post, credeam ca pot da edit... totusi vreau sa iti explic, ai de exemplu 5 masini la factiunea cu nr 1.

Functia ta:

function SetVehicle(fid, turf) {
	for(new i; i < MAX_SVEHICLES; i++) {
		if(ServerVehicles[i][vFaction] == fid) SetVehicleVirtualWorld(i, turf);
	}					
	return 1;
}

Luam deoparte linia: if(ServerVehicles[i][vFaction] == fid) SetVehicleVirtualWorld(i, turf);
In functia de mai sus, se foloseste un loop pornind de la nr. 0 pana la maxim 999(asa e in burned, MAX_SVEHICLES = 1000).
Ai de exemplu prima masina din baza de date(cu id-ul 1) din `svehicles` la factiunea cu nr. 1, asta ar cam veni la incarcare asa: 
ServerVehicles[1][vFaction] = 1; // primul 1 reprezinta id-ul masinii din baza de date, al 2-lea 1 reprezinta nr. factiunii care "detine" masina respectiva
Tu ai avut: if(ServerVehicles[i][vFaction] == fid) SetVehicleVirtualWorld(i, turf); // ceea ce inseamna ca, daca masina cu numarul 1 apartine factiunii cu nr. 1 atunci sa ii seteze masini cu id-ul 1 *din joc vw-ul de la turf.*
Daca observi la functia LoadSVehicles() ai: ServerVehicles[x][vSpawned] = CreateVehicleEx(ServerVehicles[x][vModel], ServerVehicles[x][vLocation][0], ServerVehicles[x][vLocation][1], ServerVehicles[x][vLocation][2], ServerVehicles[x][vAngle], ServerVehicles[x][vColor][0], ServerVehicles[x][vColor][1], -1);
ServerVehicles[x][vSpawned] - va fi id-ul masinii cu nr. 1 din baza de date(in joc de ex masina va avea id-ul 316), astfel id-ul masinii spawnate(in joc) trebuie sa il folosesti tu cand vrei sa aduci niste actiuni/modificari etc asupra masinilor din joc

 

Link to comment
Share on other sites

Acum 45 minute, DiBlaine a spus:

Scuze de dublu post, credeam ca pot da edit... totusi vreau sa iti explic, ai de exemplu 5 masini la factiunea cu nr 1.


Functia ta:

function SetVehicle(fid, turf) {
	for(new i; i < MAX_SVEHICLES; i++) {
		if(ServerVehicles[i][vFaction] == fid) SetVehicleVirtualWorld(i, turf);
	}					
	return 1;
}

Luam deoparte linia: if(ServerVehicles[i][vFaction] == fid) SetVehicleVirtualWorld(i, turf);
In functia de mai sus, se foloseste un loop pornind de la nr. 0 pana la maxim 999(asa e in burned, MAX_SVEHICLES = 1000).
Ai de exemplu prima masina din baza de date(cu id-ul 1) din `svehicles` la factiunea cu nr. 1, asta ar cam veni la incarcare asa: 
ServerVehicles[1][vFaction] = 1; // primul 1 reprezinta id-ul masinii din baza de date, al 2-lea 1 reprezinta nr. factiunii care "detine" masina respectiva
Tu ai avut: if(ServerVehicles[i][vFaction] == fid) SetVehicleVirtualWorld(i, turf); // ceea ce inseamna ca, daca masina cu numarul 1 apartine factiunii cu nr. 1 atunci sa ii seteze masini cu id-ul 1 *din joc vw-ul de la turf.*
Daca observi la functia LoadSVehicles() ai: ServerVehicles[x][vSpawned] = CreateVehicleEx(ServerVehicles[x][vModel], ServerVehicles[x][vLocation][0], ServerVehicles[x][vLocation][1], ServerVehicles[x][vLocation][2], ServerVehicles[x][vAngle], ServerVehicles[x][vColor][0], ServerVehicles[x][vColor][1], -1);
ServerVehicles[x][vSpawned] - va fi id-ul masinii cu nr. 1 din baza de date(in joc de ex masina va avea id-ul 316), astfel id-ul masinii spawnate(in joc) trebuie sa il folosesti tu cand vrei sa aduci niste actiuni/modificari etc asupra masinilor din joc

 

Multumesc am rezolvat. Pot avea un discord ceva? Poate mai am nevoie si ma ajuti cu mai multe (contra cost)

?imw=5000&imh=5000&ima=fit&impolicy=Lett

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...