Jump to content

BaFFyJunior

Membru
  • Posts

    240
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by BaFFyJunior

  1. Lasa comanda aia asa cum e, ma refer la comanda buybiz. Leaga-te de variabila

    pPbiskey

     

    Fa o noua variabila, pPbiskey2 si cand dai la buybiz sa cumpere pui restrictia asta:
     

    if(pPbiskey == 0)
    {
    	// codul de la cumpararea primului business
    	return 1;
    }
    
    if(pPbiskey2 == 0)
    {
    	// codul de la cumpararea celui de-al doilea business
    	return 1;
    }

     

    Sau te duci la enum pInfo si la pPbiskey faci asta:

    pPbiskey [MAX_BUSINESSPERPLAYER]

    Sus in gamemode, unde vrei tu, pe la defineuri defineste MAX_BUSINESSPERPLAYER.

    #define MAX_BUSINESSPERPLAYER 2

    Daca alegi varianta asta va trebui sa iti inlocuiesti cam tot din gamemode ce tine de pPbiskey.

    Aceasta functie ar trebui sa iti ia slotul liber al afacerilor:

    Player_GetFreeBusinessSlot(playerid)
    {
        for (new BusSlots; BusSlots < MAX_BUSINESSPERPLAYER; BusSlots++)
            if (PlayerInfo[playerid][pPbiskey][BusSlots] == 0)
                return BusSlots;
        return -1;
    }

    O folosesti asa: La comanda buybiz pui sa verifice daca playerul are slot liber:

    new SlotLiber = Player_GetFreeBusinessSlot(playerid);
    
    if(SlotLiber != -1)
    {
    	PlayerInfo[playerid][pPbiskey][SlotLiber] = b;
    	//restul codului de la cumparare
    }

    Sper ca ai inteles si ca te-am ajutat. Treaba nu e atat de grea si de complicata daca o intelegi si o faci cu pasi logici.

    • Thanks 1
  2. Acum 7 minute, Onehitkill a spus:

    Eu vreau ca la un level de admin sa scrie altfel "Fondator", "Scripter"  etc

     

    if (PlayerInfo[playerid][pAdmin] >= 6)

    if (PlayerInfo[playerid][pAdmin] >= 5)

    if (PlayerInfo[playerid][pAdmin] >= 4)

    Tocmai asta ti-am dat mai sus... E aceeasi chestie cu ce spui tu doar ca cu switch. Pune ce ti-am dat eu si foloseste acel string intr-o comanda si vei vedea.

  3. Faci un stock care sa iti seteze numele de la administrator.

    De exemplu:
     

    stock GetAdmRank( rank )
    {
        new Rankname[ 55 ];
    
        switch( rank )
        {
            case 0: Rankname = "Player";
            case 1: Rankname = "Admin 1";
            case 2: Rankname = "Admin 2";
            case 3: Rankname = "Admin 3";
            case 4: Rankname = "Admin 4";
            case 5: Rankname = "Co-Fondator";
            case 6: Rankname = "Fondator";
            case 7: Rankname = "Scripter";
        }
        return ( Rankname ) ;
    }

    Inlocuieste cu ce vrei tu.

    Apoi intr-un mesaj text il folosesti astfel:

    format(string, sizeof(string), "%s %s a premiat jucatorii.", GetAdmRank(PlayerInfo[playerid][pAdmin]), GetName(playerid));

    Sper ca ai inteles si ca te-am ajutat.

  4. Eroare spune ca in baza ta de date campul Victim nu are definita o valoare prestabilita.

    Ca sa rezolvi eroarea: Da-i edit la campul Victim si unde scrie default pune 0, 1, cat vrei in conformitate cu ceea la ce se refera serverul tau. De obicei banuiesc ca vrei sa pui 0.

  5. Acum 2 minute, adv1337 a spus:

    Sa arate jucătorii pe turf, asta ma intereseaza

    Cauta variabila care este setata jucatorului care este in turf si fa cu foreach si cu ajutorul functiei SetPlayerMarkerForPlayer sa ti-i arate. E ceva foarte basic la baza... daca nu te descurci posteaza aici variabila care este setata la turf unui jucator si te ajut.

  6. Acum 11 minute, StR_Marian a spus:

    Nu cred ca te referi la checkpoint in sine si ca te referi ca jucatori sa fie vazuti pe teritoriu.

    Este ok ce ai facut doar ca el poate nu are 'IsInTurf', si mai mult ca sigur cauta sa arate jucatori in teritoriu nu sa faca un checkpoint.

    Eu i-am facut ce a cerut. De asemenea, poate folosi un timer si cu o variabila care sa verifice daca jucatorii sunt in turf sa afiseze playerii pe mapa cu orice culoare cu ajutorul functiei SetPlayerMarkerForPlayer.

  7. Foloseste-te de GetPlayerPos.

    De exemplu:
     

    new Float: x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerCheckpoint(playerid, x, y, z, 7);

    Asta pui daca playerul e in turf sau unde doresti tu sa o pui. Sper ca ai inteles si ca te-am ajutat.

    La setplayercheckpoint in loc de playerid poti face un loop pentru playerii care se afla in turful respectiv. Nu mai lucrez pe rpg, dar iti dau un exemplu orientativ.
     

    foreach(new i: Player)
    {
    	if(IsInTurf[i] == 1)
    	{
    		SetPlayerCheckpoint(i, x, y, z, 7);
    	}
    }

     

  8. Faci o comanda, de exemplu: CMD:comandaacunsa sau faci ca daca jucatorul a pasa o tasta si are admin 5(if(pressed key_yes && APlayerData[playerid][PlayerAdmin] >= 5) sa dea bani fiecarui jucator. Te poti folosi de foreach si de functia GivePlayerMoney sau functia cu care setezi bani jucatorului.

  9. Acum 17 ore, iCzm a spus:

    fii unic si vei avea succes. Dar cu toate astea in Romania nu prea vei mai avea succes. Sunt deja cateva servere mari, poti sa si copii, poti fi si unic, playerii tot au conceptia aia ca vor juca pana la moarte pe serverele mari, ei nu stiu ca unicitatea e mai presus decat toate.

    Si serverele unice pot ajunge "servere mari" daca s-ar si juca cineva pe ele. Garantez ca sunt mult mai bune decat cele mari.

  10. CMD:setleader(playerid, params[]) {
        if(PlayerInfo[playerid][pAdmin] < 4) return SCM(playerid, COLOR_WHITE, AdminOnly);
        new id,level,string[180];
        if(sscanf(params, "ui",id,level)) return SCM(playerid, COLOR_GREY, "USAGE: {FFFFFF}/setleader <playerid/name> <faction>");
        if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SCM(playerid, COLOR_GREY, "Acel player nu este conectat.");
        if(level > 15 || level < 0) return SCM(playerid, COLOR_WHITE, "Invalid ID. (1-15).");
        
        if(PlayerInfo[id][pMember] > 0 && PlayerInfo[id][pLeader] > 0) return SCM(playerid,COLOR_WHITE, "Acel player este intr-o factiune.");
        format(string, sizeof(string), "%s este noul lider al factiunii.", GetName(id));
        SendFactionMessage(level, COLOR_CLIENT, string);
        
        new ftext[50];
        format(ftext, sizeof(ftext), FactionName(level));
        PlayerInfo[id][pMember] = level;
        
        if(PlayerInfo[playerid][pMember] == 11) finishAchievement(id, 29);    
        else if(IsACop(playerid)) finishAchievement(id, 30);    
        else if(IsAMember(playerid)) finishAchievement(id, 31);    
        else finishAchievement(id, 28);    
        
        
        PlayerInfo[id][pLeader] = level;
        FactionMembers[PlayerInfo[id][pMember]] ++;
        if(level == 0) { PlayerInfo[id][pChar] = 0; }
        else if(level == 1) { PlayerInfo[id][pChar] = 265; } //Police Departament
        else if(level == 2) { PlayerInfo[id][pChar] = 295; } //FBI
        else if(level == 3) { PlayerInfo[id][pChar] = 179; } //National Guard
        else if(level == 4) { PlayerInfo[id][pChar] = 270; } //Triad
        else if(level == 5) { PlayerInfo[id][pChar] = 292; } //Los Vagos
        else if(level == 6) { PlayerInfo[id][pChar] = 273; } //Ballas
        else if(level == 7) { PlayerInfo[id][pChar] = 265; } //SFPD
        else if(level == 8) { PlayerInfo[id][pChar] = 59; } //Tow Car Company
        else if(level == 9) { PlayerInfo[id][pChar] = 228; } //News Reporters
        else if(level == 10) { PlayerInfo[id][pChar] = 296; } //Los Aztecas
        else if(level == 11) { PlayerInfo[id][pChar] = 294; } //Hitman
        else if(level == 12) { PlayerInfo[id][pChar] = 272; } //School Instructors
        else if(level == 13) { PlayerInfo[id][pChar] = 70; } //Paramedic
    
        if(IsACop(id)) SetPlayerSkinEx(id, 305);
        else SetPlayerSkinEx(id, PlayerInfo[id][pChar]);    
        PlayerTextDrawSetPreviewModel(playerid, SkinPreview[ playerid ], GetPlayerSkin(playerid));
        PlayerTextDrawShow(playerid, SkinPreview[ playerid ]);    
        PlayerInfo[id][pRank] = 7;
        SetPlayerToTeamColor(id);
    
        new query[300];
        format(string, sizeof(string), "%s este liderul factiunii %s.", GetName(id), ftext);
        
        if(PlayerInfo[id][pAdmin] < 6) {
            mysql_format(SQL, query, sizeof(query), "INSERT INTO faction_logs (`text`, `player`,`leader`) VALUES ('%s','%d','%d')", string, PlayerInfo[id][pSQLID],PlayerInfo[playerid][pSQLID]);
            mysql_tquery(SQL,query,"","");            
        }
        
        format(query,sizeof(query),"UPDATE users SET `Leader`='%d',`Member`='%d',`Rank`='7',`Team`='%d',`CChar`='%d' WHERE `ID`='%d'",PlayerInfo[id][pLeader],PlayerInfo[id][pMember],PlayerInfo[id][pTeam],PlayerInfo[id][pChar],PlayerInfo[id][pSQLID]);
        mysql_query(SQL,query);    
        format(string, sizeof(string), "L-ai promovat pe %s ca lider la factiunea %s.", GetName(id),ftext);
        SCM(playerid, COLOR_LIGHTBLUE, string);
        
        format(string, sizeof(string), "Admin %s te-a promovat ca lider al factiunii %s.", GetName(playerid),ftext);
        SCM(id, COLOR_LIGHTBLUE, string);
        return 1;
    }

    Incearca si vezi daca merge.

  11. Acum 9 ore, ReborN a spus:

    Intru pe server, imi apare dialogul de "Register", bag parola, dau enter si dupa nu se mai intampla nimic, sta asa, in baza de date nu se salveaza nimic

    Asta imi arata in mysq_log:

    
    Log("07:54:02","CMySQLQuery::Execute[OnPlayerRegister]",1,"(error #1364) Field 'Admin' doesn't have a default value",1);

     :(

    Server linux!

    Localhost merge! Se salveaza tot acolo.

    Dupa cunostintele mele exista 2 variante:

    1. Mergi la structura tabelei users si la admin modifici ca la default sa fie 0.

    2. Conexiunea bazei de date e facuta gresit.

  12. Te poti folosi de functia CreateVehicle. Uite cum:

    Faci o comanda. Spre exemplu:

    CMD:spawneazamasina(playerid, params[])
    {
    	if(VehiculSpawnat[playerid] == 1) return SCM(playerid, -1, "Ai spawnat deja un vehicul.");
        strcat( gQuery, "Infernus\n" );
        strcat( gQuery, "Cheetah\n" );
        strcat( gQuery, "Roadtrain\r" );
        ShowPlayerDialog( playerid, Dialog_Vehicule, DIALOG_STYLE_LIST, "Vehicles", gQuery, "Alege", "Inchide" );
        return 1;
    }

    Apoi dialogul care e apelat de comanda.
     

    case Dialog_Vehicule:
    {
        switch(listitem)
    	{
    		case 0: VehiculSpawnat[playerid] = CreateVehicle(...), PutPlayerInVehicle(playerid, VehiculSpawnat[playerid], 0);
    		case 1: VehiculSpawnat[playerid] = CreateVehicle(...), PutPlayerInVehicle(playerid, VehiculSpawnat[playerid], 0);
    		case 2: VehiculSpawnat[playerid] = CreateVehicle(...), PutPlayerInVehicle(playerid, VehiculSpawnat[playerid], 0);
    	}
        return 1;
    }

    La onplayerconnect recomand sa setezi variabila VehiculSpawnat[playerid] = 0. O definesti la inceputul gmului asa:

    new VehiculSpawnat[MAX_PLAYERS];

    Sper ca te-am ajutat!

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.