Jump to content

[REZOLVAT] Problema war dispar masinile.


NoPulseJrrs
 Share

Recommended Posts

Chiar acum, TwEnzY.VALOARE a spus:

Da mi te rog codu de la /attack

YCMD:attack(playerid, params[], help) {
    if(!IsAMember(playerid)) return SCM(playerid,COLOR_GREY, "Nu faci parte dintr-o mafie.");
    if(PlayerInfo[playerid][pRank] < 3) return SCM(playerid,COLOR_LIGHTBLUE,"You do not have rank 3.");
    new turf,string[100];
    for(new i = 1; i <= sizeof(TurfInfo); i++) {
        if(IsPlayerInTurf(playerid, i) == 1) {
            turf = i;
            break;
        }
    }
    new hour,minute,second, year, month, day;
    gettime(hour,minute,second);
    getdate(year, month, day);
    new days[180];
    format(days, sizeof(days), GetWeekDay(day, month, year));
    if(PlayerInfo[playerid][pAdmin] < 7) {
        if(strcmp(days,"Saturday",true) == 0 || strcmp(days,"Sunday",true) == 0) return SCM(playerid, COLOR_LIGHTRED, "Nu se dau war-uri in weekend!");
        if(hour == 13 || hour == 14) {}
        else return SendClientMessage(playerid, COLOR_LIGHTRED, "War-uri se pot da doar in intervalul 13:00 - 14:00!");
        if(GetFactionMembersOn2(PlayerInfo[playerid][pMember]) < 2) return SCM(playerid, COLOR_LGREEN, "Nu poti folosi aceasta comanda deoarece nu sunt minim 3 membri conectati din factiunea ta!");
        if(GetFactionMembersOn2(TurfInfo[turf][zOwned]) < 2) return SCM(playerid, COLOR_LGREEN, "Nu poti folosi aceasta comanda deoarece nu sunt minim 3 membri conectati din factiunea care detine teritoriul!");
    }
    if(turf == 0) return SendClientMessage(playerid, COLOR_WHITE, "Nu esti pe un teritoriu!");
    new faction = PlayerInfo[playerid][pMember];
    if(TurfInfo[turf][zOwned] == faction) return SendClientMessage(playerid, COLOR_GREY, "Nu poti ataca turful mafiei tale.");
    if(WarInfo[turf][wAttacker] != 0) return SendClientMessage(playerid, COLOR_WHITE, "Acest turf este deja atacat.");
    if(InWar[faction] == 1) return SendClientMessage(playerid, COLOR_WHITE, "Este deja un war activ.");
    if(InWar[TurfInfo[turf][zOwned]] == 1) return SendClientMessage(playerid, COLOR_WHITE, "Aceasta mafie are deja un war activ.");
    if(FactionDeelay[PlayerInfo[playerid][pMember]] != 0) {
        format(string, sizeof(string), "Poti folosi aceasta comanda peste %d minute (%d secunde).", FactionDeelay[PlayerInfo[playerid][pMember]]/60, FactionDeelay[PlayerInfo[playerid][pMember]]);
        SCM(playerid, COLOR_LGREEN, string);
        return 1;
    }
    format(string, sizeof(string), "[WAR] %s started a war with %s.",FactionName(WarInfo[turf][wAttacker]), FactionName(TurfInfo[turf][zOwned]));
    SendAdminMessage(COLOR_LOGS, string, 1);
    format(string, sizeof(string), "[WAR] %s a atacat teritoriul %d detinut de factiunea %s.",GetName(playerid),turf,FactionName(TurfInfo[turf][zOwned]));
    SendFactionMessage(faction,COLOR_MONEY,string);
    format(string, sizeof(string), "[WAR] %s (%s) a atacat teritoriul %d detinut de factiunea ta.",FactionName(WarInfo[turf][wAttacker]),GetName(playerid),turf);
    SendFactionMessage(TurfInfo[turf][zOwned],COLOR_MONEY,string);
    new query[128];
    format(query,sizeof(query),"UPDATE `turfs` SET `Time`='24' WHERE `ID`='%d'",turf);
    mysql_query(SQL,query);

    TurfInfo[turf][zTime] = 24;
    if(PlayerInfo[playerid][pAdmin] == 7) WarInfo[turf][wTime] = 120;
    else WarInfo[turf][wTime] = 1200;
    WarInfo[turf][wAttacker] = faction;
    WarInfo[turf][wFaction] = TurfInfo[turf][zOwned];
    worstscoreat[turf] = 0;
    worstmemberat[turf] = 999;
    bestscoreat[turf] = 0;
    bestmemberat[turf] = 999;
    worstscoredf[turf] = 0;
    worstmemberdf[turf] = 999;
    bestscoredf[turf] = 0;
    bestmemberdf[turf] = 999;
    InWar[TurfInfo[turf][zOwned]] = 1;
    InWar[faction] = 1;

    InWarTurf[faction] = turf;
    InWarTurf[TurfInfo[turf][zOwned]] = turf;

    foreach(Player, i) {
        if(IsPlayerLogged == 1) {
            if(PlayerInfo[pMember] == faction || PlayerInfo[pMember] == TurfInfo[turf][zOwned]) UpdateVar(i, "WarTurf", turf);
        }
    }
    
    SetVehicle(faction, turf);
    SetVehicle(TurfInfo[turf][zOwned], turf);
    return 1;
}

Link to comment
Share on other sites

E de la function Timers(), daca cauti mai jos ai 

if(IsPlayerInTurf(i, InWarTurf[PlayerInfo[i][pMember]])) {
	new turf = InWarTurf[PlayerInfo[i][pMember]];
	if(WarInfo[turf][wFaction] == PlayerInfo[i][pMember] || WarInfo[turf][wAttacker] == PlayerInfo[i][pMember]) {
		if(IsPlayerPaused(i) == false) WarSeconds[i] ++;
		if(TurfTime[i] == 0 && IsPlayerInAnyVehicle(i)) SCM(i, COLOR_YELLOW, "Ai intrat pe teritoriu. Peste 10 secunde o sa fii dat jos din vehicul.");
		if(TurfTime[i] < 10) TurfTime[i] ++;
		if(TurfTime[i] == 10) {
			if(IsPlayerInAnyVehicle(i)) {
				new Float: Pos[3];
				GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
				SetPlayerPosEx(i, Pos[0], Pos[1], Pos[2]+1);
			}
		}
	}
}	

Este creeata in gamemode variabila TurfTime[MAX_PLAYERS], care este folosita ca un fel de count(numaratoare), si dupa cum vezi mai sus, scrie si in mesaj dupa 10 secunde il va da jos din masina. Este verificarea aia if(TurfTime == 10), de aici se ia pozitia jucatorului(doar daca e in masina) si il teleporteaza la pozitia initiala. Pentru a putea avea masinile factiunilor pe turf fa asta:

if(IsPlayerInTurf(i, InWarTurf[PlayerInfo[i][pMember]])) {
	new turf = InWarTurf[PlayerInfo[i][pMember]];
	if(WarInfo[turf][wFaction] == PlayerInfo[i][pMember] || WarInfo[turf][wAttacker] == PlayerInfo[i][pMember]) {
		if(IsPlayerPaused(i) == false) WarSeconds[i] ++;
	}
}	

Ce am facut eu aici este sa nu te mai scoata din masina atunci cand intrii cu o masina pe turf. Masinile factiunii ar trebuii sa fie pe turf in momentul in care dai /attack deoarece, daca te uiti ai

	SetVehicle(faction, turf);
	SetVehicle(TurfInfo[turf][zOwned], turf);

care face sa puna masinile pe turf la factiunea care a atacat si la factiunea care a fost atacata.

Link to comment
Share on other sites

Acum 13 minute, DiBlaine a spus:

E de la function Timers(), daca cauti mai jos ai 


if(IsPlayerInTurf(i, InWarTurf[PlayerInfo[i][pMember]])) {
	new turf = InWarTurf[PlayerInfo[i][pMember]];
	if(WarInfo[turf][wFaction] == PlayerInfo[i][pMember] || WarInfo[turf][wAttacker] == PlayerInfo[i][pMember]) {
		if(IsPlayerPaused(i) == false) WarSeconds[i] ++;
		if(TurfTime[i] == 0 && IsPlayerInAnyVehicle(i)) SCM(i, COLOR_YELLOW, "Ai intrat pe teritoriu. Peste 10 secunde o sa fii dat jos din vehicul.");
		if(TurfTime[i] < 10) TurfTime[i] ++;
		if(TurfTime[i] == 10) {
			if(IsPlayerInAnyVehicle(i)) {
				new Float: Pos[3];
				GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
				SetPlayerPosEx(i, Pos[0], Pos[1], Pos[2]+1);
			}
		}
	}
}	

Este creeata in gamemode variabila TurfTime[MAX_PLAYERS], care este folosita ca un fel de count(numaratoare), si dupa cum vezi mai sus, scrie si in mesaj dupa 10 secunde il va da jos din masina. Este verificarea aia if(TurfTime == 10), de aici se ia pozitia jucatorului(doar daca e in masina) si il teleporteaza la pozitia initiala. Pentru a putea avea masinile factiunilor pe turf fa asta:


if(IsPlayerInTurf(i, InWarTurf[PlayerInfo[i][pMember]])) {
	new turf = InWarTurf[PlayerInfo[i][pMember]];
	if(WarInfo[turf][wFaction] == PlayerInfo[i][pMember] || WarInfo[turf][wAttacker] == PlayerInfo[i][pMember]) {
		if(IsPlayerPaused(i) == false) WarSeconds[i] ++;
	}
}	

Ce am facut eu aici este sa nu te mai scoata din masina atunci cand intrii cu o masina pe turf. Masinile factiunii ar trebuii sa fie pe turf in momentul in care dai /attack deoarece, daca te uiti ai


	SetVehicle(faction, turf);
	SetVehicle(TurfInfo[turf][zOwned], turf);

care face sa puna masinile pe turf la factiunea care a atacat si la factiunea care a fost atacata.

deci sterg asta? 

		if(TurfTime[i] == 0 && IsPlayerInAnyVehicle(i)) SCM(i, COLOR_YELLOW, "Ai intrat pe teritoriu. Peste 10 secunde o sa fii dat jos din vehicul.");
		if(TurfTime[i] < 10) TurfTime[i] ++;
		if(TurfTime[i] == 10) {
			if(IsPlayerInAnyVehicle(i)) {
				new Float: Pos[3];
				GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
				SetPlayerPosEx(i, Pos[0], Pos[1], Pos[2]+1);
			}
		}
	}
}	
Link to comment
Share on other sites

Chiar acum, NoPulseJrrs a spus:

deci sterg asta? 


		if(TurfTime[i] == 0 && IsPlayerInAnyVehicle(i)) SCM(i, COLOR_YELLOW, "Ai intrat pe teritoriu. Peste 10 secunde o sa fii dat jos din vehicul.");
		if(TurfTime[i] < 10) TurfTime[i] ++;
		if(TurfTime[i] == 10) {
			if(IsPlayerInAnyVehicle(i)) {
				new Float: Pos[3];
				GetPlayerPos(i, Pos[0], Pos[1], Pos[2]);
				SetPlayerPosEx(i, Pos[0], Pos[1], Pos[2]+1);
			}
		}
	}
}	

Da, incearca sa stergi acel cod. Ce vei sterge aici iti mai zic odata: daca playerul e in masina si intra pe turf atunci ii ia pozitia si apoi i-o seteaza in acel loc, chestie ce il scoate din masina, logic. Dar, mai e o chestie, ti-am zis si mai sus, normal la /attack masinile factiunilor intre care se dau war ar trebuii sa fie pe turf, deoarece se foloseste functia SetVehicle(bla bla) la ambele factiuni.

Link to comment
Share on other sites

Acum 6 minute, DiBlaine a spus:

Da, incearca sa stergi acel cod. Ce vei sterge aici iti mai zic odata: daca playerul e in masina si intra pe turf atunci ii ia pozitia si apoi i-o seteaza in acel loc, chestie ce il scoate din masina, logic. Dar, mai e o chestie, ti-am zis si mai sus, normal la /attack masinile factiunilor intre care se dau war ar trebuii sa fie pe turf, deoarece se foloseste functia SetVehicle(bla bla) la ambele factiuni.

acm incerc si revin cu un edit ???? iti place sv? :))

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...