Szerző Téma: Névváltás parancsal  (Megtekintve 1377 alkalommal)

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
Névváltás parancsal
« Dátum: 2015. május 25. - 15:56:30 »
0 Show voters
Sziasztok. Ezt a parancsot még anno találtam az egyik módba nagyon minimálisat módosítottam rajta.Akár hogy próbálom meg nézegetem hogy hol a hiba egyszerűen nem találom az lenne a gondom hogy mikor 0 id-vel én fent vagyok egyedül akkor minden oké de mikor már más akar nevet cserélni akkor össze kavarja a házakat boltokat van mikor duplázza a házat is és egyszerűen nem tudom mi a kínja lehet.
 
COMMAND:nick(playerid, params[])
{
    if(APlayerData[playerid][LoggedIn] == true)
   {
       if(MudarNick[playerid] == true)
       { //return SendClientMessage(playerid, -1, \"{FF0000}[HIBA] Tulajdonosnak engedélyezni kell a parancs használatatá!\");
          if (APlayerData[playerid][PlayerScore] < 1700) return SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000} Sajnos 1600 pont kell ahoz hogy nevet tudj változtatni!\");
         {
            new File[90], NovoNick[24], str[150];
             GetPlayerName(playerid, NovoNick, sizeof(NovoNick));
             if(sscanf(params,\"s[24]\", NovoNick)) return SendClientMessage(playerid, 0x00FF99AA, \"Hásznalat: {FF0000}/nick [másik néed]\");
             new Name[50], del[128];
             GetPlayerName(playerid, Name, sizeof(Name));
            if(strlen(params) < 4) return SendClientMessage(playerid, -1, \"» {FF0000}Minimum 4 karakter lehet a neved!\");
            if(strlen(params) > 20) return SendClientMessage(playerid, -1, \"{FFFF00}Maximum 24 karakter lehet a neved!\");
             for(new asd; asd < sizeof(badnames); ++asd)
             {
                 if(strfind(NovoNick,badnames[asd]) != -1)
                 {
                     return SendClientMessage(playerid,-1,\"{FF0000}[ERRO] Ilyen karaktert nem írhatsz a nevedbe. Mert csatlakozáskor nem fogja engedni a samp hogy csatlakozz!\");
                 }
             }
             format(File, sizeof(File), \"ServerData/Players/%s.ini\", NovoNick);
             format(str, sizeof(str), \"ServerData/Players/%s.ini\", Name);
             if(fexist(File)) return SendClientMessage(playerid, -1, \"{FF0000}Nem lehet az új nevedre módosítani mert már használatba van!\");
             SendClientMessage(playerid, -1, \" \");
             format(del,sizeof(del),\"Nick neved sikeresen módosítva erre: {FFFF00}%s {FF0000}Relogolj és gyere fel az új nick neveddel\", NovoNick);
             SendClientMessage(playerid, 0xFF0000AA, del);
             SendClientMessage(playerid, -1, \"{FFFF00}3.000.000$\");
            SendClientMessage(playerid, -1, \"{FFFF00}Ne felejtsd el az új nick nevedet!.\");
            SendClientMessage(playerid, -1, \"{FF0000}Szerver levont 1600 pontot a név módosításért!!\");
             SendClientMessage(playerid, -1, \" \");
             RewardPlayer(playerid, -3000000, 0);
             RewardPlayer(playerid, 0, -1600);
             frename(str, File);
             SetPlayerName(playerid, NovoNick);
             APlayerData[playerid][PlayerName] = NovoNick;
             PlayerFile_Save(playerid);
             format(File, sizeof(File), PlayerFile, Name);
             if (fexist(File))
                 fremove(File);
             format(File, sizeof(File), BankFile, Name);
             if (fexist(File))
             {
                 BankFile_Save(playerid);
                 fremove(File);
             }
             BankFile_Load(playerid);
                                 //----------------------[Casa do Jogador]------------------------------------------// HouseFile_Load(HouseID
             new HouseID, BusID;
             for (new HouseSlot; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
             {
                 HouseID = APlayerData[playerid][Houses][HouseSlot];
                   if (HouseID != 0)
                 {
                     AHouseData[HouseID][Owned] = true;
                     format(AHouseData[HouseID][Owner], 24, NovoNick);
                     HouseFile_Save(HouseID);
                     House_UpdateEntrance(HouseID);
                     House_RemoveVehicles(HouseID);
                     HouseFile_Load(HouseID, true);
                    }
             }
                                 //----------------------[Empresa do Jogador]--------------------------------------------//
             for (new BusSlot; BusSlot < MAX_BUSINESSPERPLAYER; BusSlot++)
             {
                 BusID = APlayerData[playerid][business][busSlot];
                if (BusID != 0)
                {
                     ABusinessData[busID][Owned] = true;
                     format(ABusinessData[busID][Owner], 24, NovoNick);
                     BusinessFile_Save(BusID);
                     Business_UpdateEntrance(BusID);
                 }
             }
             MudarNick[playerid] = false;
           }
      }
      else
          SendClientMessage(playerid, -1, \"{FF0000}[HIBA] Tulajdonosnak engedélyezni kell a parancs használatatá!\");
   }
   else
      SendClientMessage(playerid, -1, \"{FFFF00}[HIBA]Parancs használatához lépj be a profilodba!\");
    return true;
}
« Utoljára szerkesztve: 2015. május 25. - 15:57:16 írta ƒlaﻛh »

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Névváltás parancsal
« Válasz #1 Dátum: 2015. május 26. - 08:32:49 »
+1 Show voters
Az elején így kezded a feltételeket aztán váltasz:
 
if(FELTÉTEL)
{
// kód
}
else
{
    return SendClientMessage(...);
}

 
Itt a { felesleges, mivel szöveget írsz ki...el van írva, 1700 pontot ellenőrzöl és 1600-at írsz ki a szövegben...
 
if (APlayerData[playerid][PlayerScore] < 1700) return SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000} Sajnos 1600 pont kell ahoz hogy nevet tudj változtatni!\");
{

 
Itt van még egy elírás:
 
if(strlen(params) > 20) return SendClientMessage(playerid, -1, \"{FFFF00}Maximum 24 karakter lehet a neved!\");

 
van még pár elírás azokat nem sorolom fel...
 
GetPlayerName(playerid, NovoNick, sizeof(NovoNick));
if(sscanf(params,\"s[20]\", NovoNick)) return SendClientMessage(playerid, 0x00FF99AA, \"Hásznalat: {FF0000}/nick [másik neved]\");

 
felesleges lekérned a játékos nevét GetPlayerName-el ha a következő sorban felülírod...
Itt a helyedben az elfogadható karaktereket sorolnám fel...mert rengeteg olyan van amit az SA-MP nem fogad el...
 
for(new asd; asd < sizeof(badnames); ++asd)
{
if(strfind(NovoNick,badnames[asd]) != -1)
{
 return SendClientMessage(playerid,-1,\"{FF0000}[ERRO] Ilyen karaktert nem írhatsz a nevedbe. Mert csatlakozáskor nem fogja engedni a samp hogy csatlakozz!\");
}
}

 
Vagy simán az átnevezés visszatérési értéke alapján írnék ki egy üzenetet...
http://wiki.sa-mp.com/wiki/SetPlayerName
A háznál direkt törölted a járműveket? ha igen akkor azt a részt rakd vissza, mert töröltem...
Ezt nézd meg, hogy jó e:
 
COMMAND:nick(playerid, params[])
{
// HA NINCS bejelentkezve
if(APlayerData[playerid][LoggedIn] == false){ return SendClientMessage(playerid, -1, \"{FFFF00}[HIBA]Parancs használatához lépj be a profilodba!\"); }
// HA NEM engedélyezte a tulajdonos a névváltást
if(MudarNick[playerid] == false)         { return SendClientMessage(playerid, -1, \"{FF0000}[HIBA] Tulajdonosnak engedélyezni kell a parancs használatatát!\"); }
// HA NINCS 1700 pontja
if (APlayerData[playerid][PlayerScore] < 1700) return SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000} Sajnos 1700 pont kell ahoz hogy nevet tudj változtatni!\");
// Beírt paraméter ellenőrzés (írt e be és, hogy 4-20 karakter között van e)
new NovoNick[21];
if(sscanf(params,\"s[20]\", NovoNick) || !(4 <= strlen(NovoNick) <= 20)) return SendClientMessage(playerid, 0x00FF99AA, \"Hásznalat: {FF0000}/nick [másik neved (4-20 karakter)]\");
//
new Name[21], str[128], OldFile[45], NewFile[45];
GetPlayerName(playerid, Name, sizeof(Name));
//
format(OldFile, sizeof(OldFile), \"ServerData/Players/%s.ini\", Name);
if(fexist(OldFile) || SetPlayerName(playerid, NovoNick) != 1) { return SendClientMessage(playerid, -1, \"{FF0000}Nem lehet az új nevedre módosítani mert már használatba van vagy nem megfelelő a név!\"); }
//
format(NewFile, sizeof(NewFile), \"ServerData/Players/%s.ini\", NovoNick);
APlayerData[playerid][PlayerName] = NovoNick;
frename(OldFile, NewFile);
PlayerFile_Save(playerid);
//
format(OldFile, sizeof(OldFile), PlayerFile, Name);
if (fexist(OldFile)) { fremove(OldFile); }
//
format(OldFile, sizeof(OldFile), BankFile, Name);
if (fexist(OldFile))
{
BankFile_Save(playerid);
fremove(OldFile);
}
BankFile_Load(playerid);
//
SendClientMessage(playerid, -1, \" \");
format(str,sizeof(str),\"Nick neved sikeresen módosítva erre: {FFFF00}%s {FF0000}Relogolj és gyere fel az új nick neveddel\", NovoNick);
SendClientMessage(playerid, 0xFF0000AA, str);
SendClientMessage(playerid, 0xFFFF0000, \"3.000.000$\");
SendClientMessage(playerid, 0xFFFF0000, \"Ne felejtsd el az új nick nevedet!.\");
SendClientMessage(playerid, 0xFFFF0000, \"Szerver levont 1700 pontot a név módosításért!!\");
SendClientMessage(playerid, -1, \" \");
//
RewardPlayer(playerid, -3000000, 0);
RewardPlayer(playerid, 0, -1600);
//
new hid, bid;
// Házak
for (new h; h < MAX_HOUSESPERPLAYER; h++)
{
hid = APlayerData[playerid][Houses][h];
if (hid != 0)
{
   format(AHouseData[hid][Owner], 24, NovoNick);
   HouseFile_Save(hid);
   House_UpdateEntrance(hid);
}
}
// Üzletek
for (new b; b < MAX_BUSINESSPERPLAYER; b++)
{
bid = APlayerData[playerid][business];
if (bid != 0)
{
   format(ABusinessData[bid][Owner], 24, NovoNick);
   BusinessFile_Save(bid);
   Business_UpdateEntrance(bid);
}
}
//
MudarNick[playerid] = false;
return true;
}

 
nem tudom fordításnál lehet e hiba, mert munkahelyen vagyok, nincs pawno-m :)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
Névváltás parancsal
« Válasz #2 Dátum: 2015. május 26. - 13:24:47 »
0 Show voters
Köszi a segítséget ki fogom próbálni hogy működik-e ..
Edit:
D:\\modom\\gamemodes\\PPC_Trucking.pwn(2507) : error 047: array sizes do not match, or destination array is too small
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
 
1 Error.

 

COMMAND:nick(playerid, params[])
{
        // HA NINCS bejelentkezve
        if(APlayerData[playerid][LoggedIn] == false){ return SendClientMessage(playerid, -1, \"{FFFF00}[HIBA]Parancs használatához lépj be a profilodba!\"); }
        // HA NEM engedélyezte a tulajdonos a névváltást
        if(MudarNick[playerid] == false)                        { return SendClientMessage(playerid, -1, \"{FF0000}[HIBA] Tulajdonosnak engedélyezni kell a parancs használatatát!\"); }
        // HA NINCS 1700 pontja
        if (APlayerData[playerid][PlayerScore] < 1700) return SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000} Sajnos 1700 pont kell ahoz hogy nevet tudj változtatni!\");
        // Beírt paraméter ellenőrzés (írt e be és, hogy 4-20 karakter között van e)
        new NovoNick[21];
        if(sscanf(params,\"s[20]\", NovoNick) || !(4 <= strlen(NovoNick) <= 20)) return SendClientMessage(playerid, 0x00FF99AA, \"Hásznalat: {FF0000}/nick [másik neved (4-20 karakter)]\");
        //
        new Name[21], str[128], OldFile[45], NewFile[45];
        GetPlayerName(playerid, Name, sizeof(Name));
        //
        format(OldFile, sizeof(OldFile), \"ServerData/Players/%s.ini\", Name);
        if(fexist(OldFile) || SetPlayerName(playerid, NovoNick) != 1) { return SendClientMessage(playerid, -1, \"{FF0000}Nem lehet az új nevedre módosítani mert már használatba van vagy nem megfelelő a név!\"); }
        //
        format(NewFile, sizeof(NewFile), \"ServerData/Players/%s.ini\", NovoNick);
        APlayerData[playerid][PlayerName] = NovoNick; //erre írja ez a sor: 2507
        frename(OldFile, NewFile);
        PlayerFile_Save(playerid);
        //
        format(OldFile, sizeof(OldFile), PlayerFile, Name);
        if (fexist(OldFile)) { fremove(OldFile); }
        //
        format(OldFile, sizeof(OldFile), BankFile, Name);
        if (fexist(OldFile))
        {
                BankFile_Save(playerid);
                fremove(OldFile);
        }
        BankFile_Load(playerid);
        //
        SendClientMessage(playerid, -1, \" \");
        format(str,sizeof(str),\"Nick neved sikeresen módosítva erre: {FFFF00}%s {FF0000}Relogolj és gyere fel az új nick neveddel\", NovoNick);
        SendClientMessage(playerid, 0xFF0000AA, str);
        SendClientMessage(playerid, 0xFFFF0000, \"3.000.000$\");
        SendClientMessage(playerid, 0xFFFF0000, \"Ne felejtsd el az új nick nevedet!.\");
        SendClientMessage(playerid, 0xFFFF0000, \"Szerver levont 1700 pontot a név módosításért!!\");
        SendClientMessage(playerid, -1, \" \");
        //
        RewardPlayer(playerid, -3000000, 0);
        RewardPlayer(playerid, 0, -1600);
        //
        new hid, bid;
        // Házak
        for (new h; h < MAX_HOUSESPERPLAYER; h++)
        {
                hid = APlayerData[playerid][Houses][h];
                if (hid != 0)
                {
                        format(AHouseData[hid][Owner], 24, NovoNick);
                        HouseFile_Save(hid);
                        House_UpdateEntrance(hid);
                }
        }
        // Üzletek
        for (new b; b < MAX_BUSINESSPERPLAYER; b++)
        {
                bid = APlayerData[playerid][business];
                if (bid != 0)
                {
                        format(ABusinessData[bid][Owner], 24, NovoNick);
                        BusinessFile_Save(bid);
                        Business_UpdateEntrance(bid);
                }
        }
        //
        MudarNick[playerid] = false;
        return true;
}

 
Valamiért errort ír akár hogy nézem nem látom a problémát
« Utoljára szerkesztve: 2015. május 26. - 17:40:03 írta ZSOLTI99 »

Névváltás parancsal
« Válasz #3 Dátum: 2015. május 26. - 18:57:11 »
+1 Show voters
APlayerData[playerid][PlayerName] = NovoNick; //erre írja ez a sor: 2507

 
Nem teszteltem, de próbáld meg így...
 
format(APlayerData[playerid][PlayerName], MAX_PLAYER_NAME, \"%s\", NovoNick);

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
Névváltás parancsal
« Válasz #4 Dátum: 2015. május 26. - 20:21:33 »
0 Show voters
Köszi de ez itt meg fogta tudásomat. Valamiért azt írja \"Nem lehet az új nevedre módosítani mert már használatba van vagy nem megfelelő a név!\" nem értem mi a kínja ennek.

Névváltás parancsal
« Válasz #5 Dátum: 2015. május 26. - 20:32:43 »
+1 Show voters
format(OldFile, sizeof(OldFile), \"ServerData/Players/%s.ini\", Name);
        if(fexist(OldFile) || SetPlayerName(playerid, NovoNick) != 1) { return SendClientMessage(playerid, -1, \"{FF0000}Nem lehet az új nevedre módosítani mert már használatba van vagy nem megfelelő a név!\"); }

 
helyett
 
format(OldFile, sizeof(OldFile), \"ServerData/Players/%s.ini\", NovoNick); // itt keresd a módosítást
        if(fexist(OldFile) || SetPlayerName(playerid, NovoNick) != 1) { return SendClientMessage(playerid, -1, \"{FF0000}Nem lehet az új nevedre módosítani mert már használatba van vagy nem megfelelő a név!\"); }

Névváltás parancsal
« Válasz #6 Dátum: 2015. május 26. - 20:36:24 »
+1 Show voters
//[...]
        new NovoNick[21];
        if(sscanf(params,\"s[20]\", // [.....]

 
nem egyértelmű?
különben is mi a faszért ilyen random nagyságú tömböt adsz meg?
most nincs jó kedvem

Nem elérhető divkn

  • 3259
    • Profil megtekintése
Névváltás parancsal
« Válasz #7 Dátum: 2015. május 26. - 21:36:12 »
+1 Show voters
APlayerData enumerotoránál hány cellás PlayerName-nek? Mert a NovoNick változónak a mérete nem egyezik a \'PlayerName\' cella számával.
Ha MAX_PLAYER_NAME-et adtál meg neki, akkor
 
new NovoNick[MAX_PLAYER_NAME];

 
kell megadnod.

Nem elérhető ZSOLTI99

  • 1827
    • Profil megtekintése
Névváltás parancsal
« Válasz #8 Dátum: 2015. május 26. - 22:24:31 »
0 Show voters
Sikerült köszönöm a segítséget. Zárok teljesen működik.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal