Der breadfish Song ist gut, aber nichts im Gegensatz zum guten, alten Leek Spin.
Beiträge von Rocking Sock
-
-
Bevor ihr nur blöd rumspamt, dass es das falsche Forum ist könntet ihr ihm ja auch helfen oder?
Da du noch ein Scriptanfänger bist erkläre ich dir einmal, wie ich rausbekommen habe, wie man den Skin ändert.
1. Schritt: Wann wird dem Spieler der Skin zugeteilt?
Antwort: Beim Login NACH der Registration. Also müssen wir das Kommando /login finden. STRG + F -> /login
Nach mehrmaligem Drücken von F3 sind wir beim Kommando /login angekommen.Code
Alles anzeigenif (strcmp(cmd, "/login", true) ==0 ) { if(IsPlayerConnected(playerid)) { new tmppass[64]; if(gPlayerLogged[playerid] == 1) { SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are already logged in."); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /login [password]"); return 1; } strmid(tmppass, tmp, 0, strlen(cmdtext), 255); Encrypt(tmppass); OnPlayerLogin(playerid,tmppass); } return 1; }
Hier gibt es allerdings nichts das auf einen Skin hinweist. Allerdings ist das noch nicht das komplette Login Script, was uns "OnPlayerLogin(playerid, tmppass);" verrät.
2. Schritt: Was geschieht bei OnPlayerLogin?
Antwort: Wir kommen wahrscheinlich zu unserer Antwort. STRG + F -> OnPlayerLogin. So oft F3 drücken, bis wir bei public OnPlayerLogin sind.Code
Alles anzeigenpublic OnPlayerLogin(playerid,password[]) { new tmp2[256]; new string2[64]; new playername2[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername2, sizeof(playername2)); format(string2, sizeof(string2), "%s.ini", playername2); new File: UserFile = fopen(string2, io_read); if ( UserFile ) { new PassData[256]; new keytmp[256], valtmp[256]; fread( UserFile , PassData , sizeof( PassData ) ); keytmp = ini_GetKey( PassData ); if( strcmp( keytmp , "Key" , true ) == 0 ) { valtmp = ini_GetValue( PassData ); strmid(PlayerInfo[playerid][pKey], valtmp, 0, strlen(valtmp)-1, 255); } if(strcmp(PlayerInfo[playerid][pKey],password, true ) == 0 ) { new key[ 256 ] , val[ 256 ]; new Data[ 256 ]; while ( fread( UserFile , Data , sizeof( Data ) ) ) { key = ini_GetKey( Data ); //[Habe den mittleren Teil einmal weggelassen.] }//end while fclose(UserFile);//close the file after everything has been read in the while } else { SendClientMessage(playerid, COLOR_WHITE, "SERVER: Password does not match your name."); fclose(UserFile); gPlayerLogTries[playerid] += 1; if(gPlayerLogTries[playerid] == 4) { Ban(playerid); } return 1; } PlayerInfo[playerid][pAdjustable] = 0; ResetPlayerMoney(playerid); ConsumingMoney[playerid] = 1; GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]); CurrentMoney[playerid] = PlayerInfo[playerid][pCash]; SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]); if(PlayerInfo[playerid][pReg] == 0) { PlayerInfo[playerid][pLevel] = 1; PlayerInfo[playerid][pSHealth] = 0.0; PlayerInfo[playerid][pHealth] = 50.0; PlayerInfo[playerid][pPos_x] = 2246.6; PlayerInfo[playerid][pPos_y] = -1161.9; PlayerInfo[playerid][pPos_z] = 1029.7; PlayerInfo[playerid][pInt] = 15; PlayerInfo[playerid][pLocal] = 255; PlayerInfo[playerid][pTeam] = 3; PlayerInfo[playerid][pModel] = 264; new randphone = 1000 + random(8999);//minimum 1000 max 9999 //giving one at the start PlayerInfo[playerid][pPnumber] = randphone; PlayerInfo[playerid][pPhousekey] = 255; PlayerInfo[playerid][pPbiskey] = 255; PlayerInfo[playerid][pAccount] = 1000; PlayerInfo[playerid][pReg] = 1; GivePlayerMoney(playerid, 2000); } if(PlayerInfo[playerid][pLevel] == -999) //autoban { Ban(playerid); } else if(PlayerInfo[playerid][pCK] > 0) { Kick(playerid); } format(string2, sizeof(string2), "SERVER: Welcome %s",playername2); SendClientMessage(playerid, COLOR_WHITE,string2); printf("%s has logged in.",playername2); if (PlayerInfo[playerid][pDonateRank] > 0) { SendClientMessage(playerid, COLOR_WHITE,"SERVER: You are a Premium Account user."); } if (PlayerInfo[playerid][pAdmin] > 0) { format(string2, sizeof(string2), "SERVER: You are logged in as a Level %d Admin.",PlayerInfo[playerid][pAdmin]); SendClientMessage(playerid, COLOR_WHITE,string2); } SetSpawnInfo(playerid, PlayerInfo[playerid][pTeam], PlayerInfo[playerid][pModel], PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z], 1.0, -1, -1, -1, -1, -1, -1); if(gTeam[playerid] == 0) { gTeam[playerid] = 3; } else { gTeam[playerid] = PlayerInfo[playerid][pTeam]; } gPlayerLogged[playerid] = 1; SpawnPlayer(playerid); format(tmp2, sizeof(tmp2), "~w~Welcome ~n~~y~ %s", playername2); DateProp(playerid); GameTextForPlayer(playerid, tmp2, 5000, 1); SendClientMessage(playerid, COLOR_YELLOW, motd); TextDrawShowForPlayer(playerid,Textdraw); if(PlayerInfo[playerid][pFMember] < 255) { format(tmp2, sizeof(tmp2), "Family MOTD: %s.", FamilyInfo[PlayerInfo[playerid][pFMember]][FamilyMOTD]); SendClientMessage(playerid, COLOR_YELLOW, tmp2); } } return 1; }
Hier haben wir jetzt if(PlayerInfo[playerid][pReg] == 0), was in meinem Beispiel in Zeile ist. Das bedeutet, dass alles was in dieser Klammer kommt nur beim Login nach dem registrieren gesetzt wird, da da die Variable pRed noch auf 0 steht. Und e voila, wir sind zum Ziel gekommen. In Zeile 56 kann man PlayerInfo[playerid][pModel] = 264; sehen, was auch schon das Ende des großen Rätsels ist. Einfach diese Variable in die des gewünschten Startskins verändern!
Greetz und sorry für den langen Script im Posting.
-
Und ich suche einen aktiven Server, wo ich was zu tun habe.
Habe Script Erfahrung mit dem Godfather, jedoch sind andere Scripts auch kein Problem. ICQ: 259448276 Weiteres können wir da besprechen.
-
Eure Indentaion ist schlecht.^^
Code
Alles anzeigenif (strcmp(cmdtext, "/opengate", true)==0) { if(IsACop(playerid) || PlayerInfo[playerid][pTeam] == 2); { MoveObject (gate1,1588.921386,-1638.332275,7.838838,0.592236); return 1; } else { SendClientMessage(playerid, 0xAA3333AA, "Du bist nicht LSPD"); } return 1; } if (strcmp(cmdtext, "/closegate", true)==0) { if(IsACop(playerid) || PlayerInfo[playerid][pTeam] == 2); { MoveObject (gate1,1588.921386,-1638.332275,7.838838,0.592236); return 1; } else { SendClientMessage(playerid, 0xAA3333AA, "Du bist nicht LSPD"); } return 1; }
Dann am besten noch sowas wie if(PlayerToPoint(in der Nähe vom Gate)); einbauen, damit man das Tor nicht in Las Venturas öffnen kann. Ich habe in mein Script eh schon automatische Tore eingebaut, die solche Kommandos überflüssig machen.
Danke für eure Aufmerksamkeit.
-
EDIT: Problem gefunden^^
-
Vielen Dank! Jetzt muss ich damit nur noch eine Tor-Funktion zusammenbasteln.
Mal schauen ob ich das hinkrieg.
-
Und was bringt eigentlich Timer, bzw. wie verwendet man ihn? SetTimer ist das einzige, das ich nicht verstehe. Ist SetTimer immer mit einer public Funktion gekoppelt?
-
Klaro, beim compilen wird ja erst die .pwn in die .amx umgewandelt, und diese .amx brauchst du ja.
-
Hey,
poste doch bitte mal die Zeilen, die in der Fehlermeldung genannt werden. Sollte die oberste Klammer, die du gepostet hast nicht zu einem Kommando gehören musst du sie entfernen.
So können wir auf dem ersten Blick leider keine Fehler beheben!