Sieht gut aus gefällt mir!
Beiträge von Anti.
-
-
Ob es so ging wie ich es geschrieben hatte ?
Ja probier mal
Wie gesagt der Timer ist schon gefixt, das mit den HP teste ich später nochmal
-
Durch den Code den ich dir gegeben habe ?
Beim Connecten erstmal Leben auf 100 Setzen ?
Mein Timer-Code ist doch schon angepasst?
Das mit dem beim Connecten HP auf 100 werde ich mal testen. Danke
-
public OnPlayerStateChange(playerid, newstate, oldstate){if(newstate==PLAYER_STATE_DRIVER)}{new vID=GetPlayerVehicleID(playerid);for(new i=0; i<sizeof(fvCars); i++){if(fvCars[i][id_x]!=vID)continue;//VerkaufsprozessSetPVarInt(playerid,"buyCarID",i);new string[256];format(string,sizeof(string),"Möchten sie dieses Vehikel für %i$ kaufen?",fvCars[i][c_preis]);ShowPlayerDialog(playerid,DIALOG_FLUGZEUGVERKAUF,DIALOG_STYLE_MSGBOX,"Flugzeugverkauf",string,"Ja","Nein");break;}return 1;}
Zeile 13 ist die Zeile 13012
Ersetze erstmal deinen Code mit dem den ich geschickt habe, dann kompiliere und guck was für Errors kommen
-
Handelt es sich um ein RL/RP Projekt? Wenn ja kann ich mit machen.
Habe vor ein RL-RP Projekt zu machen ja, wird ziemlich stark RP basiert werden, man könnte sagen es wird ein wenig LS-RP ähneln mit einer Menge neuer & eigener Ideen von mir und Empfehlungen/Verbesserungen
-
Hey, ich suche im Moment Tester für meinen Testserver, 2-4 Leute die aktiv und oft erreichbar sind würden reichen.
Da viele meiner Kumpel bei Games "eingebildet" sind und nix mit "schlechter Grafik" zocken, ist es relativ schwer erstmal ordentliche Leute zum Testen zu finden,
darum mache ich mal hier eine freche kleine Werbung bzw Suche dafürIch verlange nicht viel von den Testern nur, dass sie spaß an SA:MP haben und aktiv/oft erreichbar sind.
Zudem werden die Tests wahrscheinlich nur 1-5 Minuten ihrer Zeit beanspruchen.Ich freue mich auf zukünftige Zusammenarbeit mit Euch!
Zur Zeit werden keine Tester mehr gesucht!
-
Sieht sehr sehr nice aus, ein riesen Kompliment, ich hoffe das wird auf deinen Server verwendet falls du einen machst, das ist zu gut um nur als Vorschau zu dienen!
-
Habe da nochn Problem beim Timer, wie man vllt gesehen hat habe ich ein eigenes Todessystem, (Bei low HP ist man verletzt etc.), dies wird auch jede Sekunde abgefragt.
Problem: Manchmal (nicht immer) kriege ich nach dem Login die Animation & Freeze & Zeit des verletzt seins, obwohl ich beim Spawn 75 HP habe, und beim Timer <= 14 HP angegeben ist,woran könnte das liegen, wie wirds vermieden?
(Btw, Danke es klappt jetzt mit dem Timer, dass es jede Sekunde ausgeführt wird statt 4000000x in ner Sekunde)
-
Und wie sollte ich dann vorgehen?
Falls nicht connected: return, break oder continue? -
Hey, ich habe in einem Timer eine menge spielerbezogene Funktionen, da es ein Timer ist, habe ich eine Schleife eingebunden.
Jetzt habe ich das Problem: Die Schleife arbeitet unabhängig vom Timer.Beispiel:
Die Schleife (obwohl nur 1 Spieler aufm Server ist) wird ca. 20x die Sekunde abgerufen, obwohl der Timer auf 1 Sekunde liegt.
Wie ändere ich das?Timer:
ongamemodeinitSetTimer("SecTimer", 1000, 1);
Code
Alles anzeigenforward SecTimer(); public SecTimer() { new uhour, umin, usecs; gettime(uhour, umin, usecs); for (new i=0; i < MAX_PLAYERS; i++) { printf("%02d %d02 %02d Test 2", uhour, umin, usecs); if(PlayerInfo[i][pLoggedIn] == false) continue; new vw = GetPlayerVirtualWorld(i); new Float:HP; new Float:X, Float:Y, Float:Z; GetPlayerPos(i, X, Y, Z); GetPlayerHealth(i, HP); if(HP <= 14.000) { if(IsPlayerConnected(i)) { if(PlayerInfo[i][pLoggedIn] == true) { if(IsInjured[i] == false) { IsInjured[i] = true; InjuredTimer[i] = 240; Invulnerable[i] = true; InvulCounter[i] = 3; new dstr[528]; format(dstr, sizeof (dstr), "%s ist schwer verletzt und braucht einen Sanitäter! /Medic %d", PlayerInfo[i][pName], i); MedicMessage("|__________________________Achtung_________________________|"); MedicMessage(dstr); MedicMessage("|__________________________________________________________|"); new string[128]; format(string, sizeof(string), "(( %s ist verletzt und liegt am Boden.\nEr braucht einen Krankenwagen! ))", PlayerInfo[i][pName]); InjuredLabel[i] = Create3DTextLabel(string, 0xFF6666FF, X, Y, Z, 25.00, vw, 1); Attach3DTextLabelToPlayer(InjuredLabel[i], i, 0.00, 0.00, 0.500); ApplyAnimation(i, "PED", "KO_shot_stom", 4.1, 1, 0, 0, 1, 0, 1); notruf[i] = 1; } } } } if(InvulCounter[i] > 0) { InvulCounter[i] -= 1; if(InvulCounter[i] == 0) { Invulnerable[i] = false; } } if(InjuredTimer[i] > 0) { if(IsDead[i] == false) { ApplyAnimation(i, "CRACK", "crckdeth2", 4.1, 1, 0, 0, 1, 0, 1); InjuredTimer[i] -= 1; if(InjuredTimer[i] == 0) { ClearAnimations(i); if(IsHealed[i] == false) { SendAction(i, "ist soeben verstorben."); SetPlayerHealth(i, 0); Delete3DTextLabel(InjuredLabel[i]); IsDead[i] = true; IsInjured[i] = false; } } } } if(PlayerInfo[i][pKicked] == 1) { Kick(i); } ResetPlayerMoney(i); GivePlayerMoney(i, PlayerInfo[i][pMoney]); if(PlayerInfo[i][pPrison] <= 0) { PlayerInfo[i][pPaydaySecs] += 1; if(PlayerInfo[i][pPaydaySecs] == 60) { PlayerInfo[i][pPaydayMins] += 1; PlayerInfo[i][pPaydaySecs] = 0; if(PlayerInfo[i][pPaydayMins] == 60) { Payday(i); PlayerInfo[i][pPaydayMins] = 0; } } } SetPlayerTime(i, uhour, umin); if(PlayerInfo[i][pDigCD] > 0) { PlayerInfo[i][pDigCD] -= 1; if(PlayerInfo[i][pDigCD] == 0) { SendClientMessage(i, COLOR_INFO, "** Du kannst wieder Müll durchwühlen!"); } } if(PlayerInfo[i][pKH] > 0) { PlayerInfo[i][pKH] -= 1; if(PlayerInfo[i][pKH] == 0) { SpawnPlayer(i); UnfreezePlayer(i); PlayerInfo[i][pMoney] -= 500; GivePlayerMoney(i, -500); SendClientMessage(i, COLOR_LIGHT_RED, "Du konntest noch von den Ärtzten gerettet werden... Behandlungskosten: $500"); } } if(PlayerInfo[i][pJail] > 0) { if(PlayerInfo[i][pPrison] == 0 && PlayerInfo[i][pKH] == 0) { PlayerInfo[i][pJail] -= 1; if(PlayerInfo[i][pJail] == 0) { SpawnPlayer(i); } } } if(PlayerInfo[i][pPrison] > 0 && PlayerInfo[i][pKH] == 0) { PlayerInfo[i][pPrison] -= 1; if(PlayerInfo[i][pPrison] == 0) { SpawnPlayer(i); } } RepairVehicle(admincar[i]); SetVehicleHealth(admincar[i], 6000.000); break; } return 1; }
Edit: Es ist nur übertrieben schnell wenn 0 Spieler on sind, wenn 1 Spieler on ist, funktioniert es doch mit1 Sekunde
-
-
FrakIDtoName
format(string, sizeof(string), "Fraktion: %s", FrakIdToName(PlayerInfo[playerid][pFrak]));
Ich will jetzt ja nicht fies klingen aber hast du dir das überhaupt durchgelesen?...Obwohl das nicht ist was ich suche, Danke trotzdem für deine versuchte Hilfe!
Edit: Obwohl, deine Funktion kann mir wahrscheinlich doch helfen. Indem ich sie umändere
Ok ändern hat nicht ganz geklappt, kriege Errors:
Code
Alles anzeigenstock FrakIDToName(frakid) { new name[64]; new error[32]; format(error, sizeof(error), "ERROR"); if(frakid == 1) { format(name, sizeof(name), "Hitman Agency"); return name; } if(frakid == 2) { format(name, sizeof(name), "Federal Bureau of Investigation"); return name; } if(frakid == 3) { format(name, sizeof(name), "San Andreas Medical Department"); return name; } if(frakid == 4) { format(name, sizeof(name), "Los Santos Police Department"); return name; } if(frakid == 5) { format(name, sizeof(name), "Regierung"); return name; } return false; // error 079: inconsistent return types (array & non-array) }
-
Ich finde SA:MP lohnt sich schon noch, man muss nur einen Server finden der zu einem passt wo die Spieler stimmen, die Admins stimmen & das Script stimmt.
Anzahl ist mir persönlich egal, ich zocke lieber 5-10 guten, freundlichen und kompetenten Spielern pro Tag als mit 200 Idioten
Aber natürlich gibt es noch Server mit 150-200 Spieler+Selbst 10 Spieler sind viel in der kleinen GTA Welt
-
Hey, ich wollte mal fragen wie genau ich ein IDtoName mache.
Ich habe es hinbekommen, dass wenn ich z.B. "FrakIDtoName" mache, dass es z.B. bei ID 2 in den Chat eine neue Message schickt "FBI", es sollte aber am besten als String im Script funktioniert, wo es noch z.B. in einer format string zeile denn so aussieht:
format(string, sizeof(string), "Fraktion: %s", FrakIdToName(PlayerInfo[playerid][pFrak])); Beispiel verstanden? Als String die ID zum Namen ändern
-
public OnPlayerStateChange(playerid, newstate, oldstate){if(newstate==PLAYER_STATE_DRIVER)}{new vID=GetPlayerVehicleID(playerid);for(new i=0; i<sizeof(fvCars); i++){if(fvCars[i][id_x]!=vID)continue;//VerkaufsprozessSetPVarInt(playerid,"buyCarID",i);new string[256];format(string,sizeof(string),"Möchten sie dieses Vehikel für %i$ kaufen?",fvCars[i][c_preis]);ShowPlayerDialog(playerid,DIALOG_FLUGZEUGVERKAUF,DIALOG_STYLE_MSGBOX,"Flugzeugverkauf",string,"Ja","Nein");break;}return 1;}
Wenn wirklich nur das da steht, sollte es so gehen:
Ansonsten empfehle ich dir noch die Zeilennummerierung dort hinzuschreiben aus deinem Script, wo auch wirklich der Error in der Line ist.z.B.
Bei der Forenfunktion ist ja der Code von 1-X durchnummeriert, aber deine Errorzeile liegt bei (13002) z.B., wenn schreibst hier ins Forum in die Zeile vom Code "Hier ist der Error bzw. Zeile 13002"Code
Alles anzeigenpublic OnPlayerStateChange(playerid, newstate, oldstate) { if(newstate==PLAYER_STATE_DRIVER) { new vID=GetPlayerVehicleID(playerid); for(new i=0; i<sizeof(fvCars); i++) { if(fvCars[i][id_x]!=vID)continue; //Verkaufsprozess SetPVarInt(playerid,"buyCarID",i); new string[256]; format(string,sizeof(string),"Möchten sie dieses Vehikel für %i$ kaufen?",fvCars[i][c_preis]); ShowPlayerDialog(playerid,DIALOG_FLUGZEUGVERKAUF,DIALOG_STYLE_MSGBOX,"Flugzeugverkauf",string,"Ja","Nein"); break; } } return 1; }
-
Sicher, dass es die richtige Zeile ist? Poste mal den ganzen Code von der Funktion
-
Funktioniert jetzt, Danke
-
Das weiß ich, aber ich weiß nicht wie man das Beispiel richtig anwendet.
So vielleicht?
Code
Alles anzeigenpublic OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/mycommand", cmdtext, true, 10) == 0) { new score = GetPlayerScore(playerid); if(score >= 5) // >= ist Größer Gleich. z.B. in diesem Fall: Level 5 und höher { // do action } return 1; } return 0; }
Soo ich brauch wie immer Hilfe..Wenn ich in ein Fahrzeug gehe und /motor eingebe passiert nix, Spieler mit der selben Fraktions ID wie des Fahrzeuges sollen den Motor betätigen können, aber im Fahrzeug selber passiert nichts mehr...
befehlCode
Alles anzeigenocmd:motor(playerid, params[]) { new carid = GetPlayerVehicleID(playerid); if(!IsPlayerConnected(playerid)) return ERR_NO_CON if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_BEFEHL, "Du bist in keinem Fahrzeug."); if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_BEFEHL, "Du bist nicht der Fahrer."); new tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective; GetVehicleParamsEx(carid,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective); for(new i = 0; i < sizeof(Vehicle); i++) { if(!Vehicle[i][SID])continue; // Oder wie auch immer du es nun genannt hast. if(Vehicle[i][SID] != carid)continue; if(Vehicle[i][fFrak] == PlayerInfo[playerid][pFrak]) //Die ID der Fraktion eintragen. { if(tmp_engine == 0) { tmp_engine = 1; SendClientMessage(playerid, COLOR_INFO, "Der Motor startet..."); SetPlayerChatBubble(playerid, "Startet den Motor.", COLOR_ACTION, 20.000, 4000); } else if(tmp_engine == 1) { tmp_engine = 0; SendClientMessage(playerid, COLOR_INFO, "Der Motor ist aus."); } } else { SendClientMessage(playerid, COLOR_BEFEHL, "Du hast keine Schlüssel."); return 1; } } SetVehicleParamsEx(carid,tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective); return 1; }
fahrzeug ladesystem:Code
Alles anzeigenstock LoadVehs() { new rows,fields; new Cache:Vehs = mysql_query(handle, "SELECT * FROM `fahrzeuge`",true); cache_get_data(rows,fields); for(new i=0;i<rows;i++) { Vehicle[i][VID] = cache_get_field_content_int(i, "id"); Vehicle[i][fModel] = cache_get_field_content_int(i, "modelid"); Vehicle[i][fSposX] = cache_get_field_content_float(i, "sPos-X"); Vehicle[i][fSposY] = cache_get_field_content_float(i, "sPos-Y"); Vehicle[i][fSposZ] = cache_get_field_content_float(i, "sPos-Z"); Vehicle[i][fSposO] = cache_get_field_content_float(i, "sPos-O"); Vehicle[i][fColor1] = cache_get_field_content_int(i, "color_1"); Vehicle[i][fColor2] = cache_get_field_content_int(i, "color_2"); Vehicle[i][fSirene] = cache_get_field_content_int(i, "sirene"); Vehicle[i][fFrak] = cache_get_field_content_int(i, "fraktion_id"); Vehicle[i][fFuel] = cache_get_field_content_int(i, "tank"); cache_get_field_content(i,"lastdriver", Vehicle[i][fLastDriver],handle,64); cache_get_field_content(i,"plate", Vehicle[i][fPlate],handle,32); SetVehicleParamsEx(i, false, false, false, false, false, false, false); Vehicle[i][SID] /*= cache_get_field_content_int(i, "id");*/ = CreateVehicle(Vehicle[i][fModel],Vehicle[i][fSposX],Vehicle[i][fSposY],Vehicle[i][fSposZ],Vehicle[i][fSposO],Vehicle[i][fColor1],Vehicle[i][fColor2], CAR_RESPAWN_TIME,Vehicle[i][fSirene]); new numberplate[256]; format(numberplate, sizeof (numberplate), "%s %d", Vehicle[i][fPlate], Vehicle[i][VID]); SetVehicleNumberPlate(Vehicle[i][SID], numberplate); if (Vehicle[i][fFrak] == 3) { if (Vehicle[i][fModel] == 560) { SireneSAMD[i] = CreateObject(19419, 0.00, 0.20, 0.85, 0.00, 0.00, 0.00, 50.0); AttachObjectToVehicle(SireneSAMD[i], Vehicle[i][SID], 0.00, 0.00, 0.81, 0, 0, 0); } } } cache_delete(Vehs); print("Vehicles Spawned"); return 1; }
-
Was ist das denn für ein Fehler?
Wie & wo benutzt du die Datenbank? Lokal oder auf einem anderen hoster? -
Ich empfehle dir auch, wenn du kannst, lieber HeidiSQL oder Navicat zu nutzen, da phpMyAdmin, meiner Meinung nach, sehr unübersichtlich für Neulinge sein kann
Google: HeidiSQL / Navicat download