Includes darfst du nicht kompilieren, die musst du nur speichern. Kompiliert werden sie durch die pwn Datei.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Jeffry: Glückwunsch zu 9000 Beiträgen
Funktioniert, habe mein Gamemode geupdatet und hochgeladen doch nun funktioniert er nicht mehr und Mode hat sich auch zu Unkown geändert.
In der Server Log steht folgendes:
Sehr vieles, doch wichtig:
[02:05:56] *** Streamer Plugin: Warning: Include file version (0x275201) does not match plugin version (0x27201) (script might need to be recompiled with the latest include file)
Wie mache ich das?
-
Hier den neusten Streamer herunterladen und in den Server einfügen. Auch die Include. Danach den Code neu kompilieren.
http://forum.sa-mp.com/showthread.php?t=102865Falls noch immer Unknown da steht, nutze das crashdetect Plugin und poste was das printet.
Haha, danke. Ich sehe es mit dem mobilen Design gar nicht.
-
Immer noch folgendes in der Server Log:
----------
Loaded log file: "server_log.txt".
----------SA-MP Dedicated Server
----------------------
v0.3.7, (C)2005-2015 SA-MP Team[02:21:58] password = "" (string)
[02:21:58]
[02:21:58] Server Plugins
[02:21:58] --------------
[02:21:58] Loading plugin: crashdetect.so
[02:21:58] crashdetect v4.8.4 is OK.
[02:21:58] Loaded.
[02:21:58] Loading plugin: sscanf.so
[02:21:58][02:21:58] ===============================
[02:21:58] sscanf plugin loaded.
[02:21:58] Version: 2.8.1
[02:21:58] (c) 2012 Alex "Y_Less" Cole
[02:21:58] ===============================
[02:21:58] Loaded.
[02:21:58] Loading plugin: streamer.so
[02:21:58]*** Streamer Plugin v2.7.6 by Incognito loaded ***
[02:21:58] Loaded.
[02:21:58] Loading plugin: filemanager.so
[02:21:58] ******************
[02:21:58] ** FILE MANAGER **
[02:21:58] ** Loaded **
[02:21:58] ** Version 1.5 **
[02:21:58] ******************
[02:21:58] Loaded.
[02:21:58] Loading plugin: whirlpool.so
[02:21:58]
[02:21:58] ==================
[02:21:58]
[02:21:58] Whirlpool loaded
[02:21:58]
[02:21:58] ==================
[02:21:58]
[02:21:58] Loaded.
[02:21:58] Loaded 5 plugins.[02:21:58]
[02:21:58] Ban list
[02:21:58] --------
[02:21:58] Loaded: samp.ban
[02:21:58]
[02:21:58]
[02:21:58] Filterscripts
[02:21:58] ---------------
[02:21:58] Loading filterscript 'UltraHost.amx'...
[02:21:59] Loading filterscript 'tstudio.amx'...
[02:22:01] *** Streamer Plugin: Include file version (0x27201) does not match plugin version (0x276001) (script might need to be recompiled with the latest include file)
[02:22:01]
[02:22:01]
[02:22:01]
[02:22:01] =======================================
[02:22:01] | |
[02:22:01] | YSI version 3.09.0684 |
[02:22:01] | By Alex "Y_Less" Cole |
[02:22:01] | |
[02:22:01] =======================================
[02:22:01]
[02:22:01]
[02:22:01]
[02:22:02] LOADED 8370 texture definitions
[02:22:02] ----------------------------------------------
[02:22:02] ---------Texture Studio By [uL]Pottus---------
[02:22:02] -------------------------------------Loaded---
[02:22:02] Loading filterscript 'fsdebug.amx'...
[02:22:04]
*********************
* SA:MP DEBUG 0.2 *
[02:22:04] * By Simon Campbell *
*********************
[02:22:04] * Version: 0.5d *
*********************
[02:22:04] * -- LOADED *
*********************[02:22:04] Loading filterscript 'npcrecord.amx'...
[02:22:04] Unable to load filterscript 'npcrecord.amx'.
[02:22:04] Loaded 3 filterscripts.[02:22:06] [debug] Run time error 19: "File or function is not found"
[02:22:06] [debug] FreezeSyncData
[02:22:06] [debug] SetFakeFacingAngle
[02:22:06] [debug] SendLastSyncData
[02:22:06] [debug] ClearAnimationsForPlayer
[02:22:06] [debug] SetKnifeSync
[02:22:06] [debug] SetFakeHealth
[02:22:06] [debug] SetFakeArmour
[02:22:06] [debug] PlayerTextDrawSetPosition
[02:22:06] [debug] SpawnPlayerForWorld
[02:22:06] [debug] SetDisableSyncBugs
[02:22:06] LOADED 8370 texture definitions
[02:22:06] [debug] Run time error 19: "File or function is not found"
[02:22:06] [debug] FreezeSyncData
[02:22:06] [debug] SetFakeFacingAngle
[02:22:06] [debug] SendLastSyncData
[02:22:06] [debug] ClearAnimationsForPlayer
[02:22:06] [debug] SetKnifeSync
[02:22:06] [debug] SetFakeHealth
[02:22:06] [debug] SetFakeArmour
[02:22:06] [debug] PlayerTextDrawSetPosition
[02:22:06] [debug] SpawnPlayerForWorld
[02:22:06] [debug] SetDisableSyncBugs
[02:22:06] Script[gamemodes/LnD.amx]: Run time error 19: "File or function is not found"
[02:22:06] Number of vehicle models: 0
-
Dir fehlt dieses Plugin: http://forum.sa-mp.com/showthread.php?t=563442é
-
-
Was hast du da heruntergeladen? Du brauchst die SKY.dll bzw so Datei, und als Include legst du das an, was er als Code gepostet hat. Das dürfte es sein. Der Rest der Downloads sieht nach dem Sourcecode aus.
-
Ich habe dir den Code etwas umgebaut, so ist er besser:
function:ShowStatistics(playerid, playerid2)
{
if(playerid2 == INVALID_PLAYER_ID) return 1; //Do not proceed.new string[1024], string2[64];
format(string, sizeof(string), ""grey"Spieler ID: %d\n", playerid2);
format(string, sizeof(string), "%sMitglied seit: %s\n", string, User[playerid2][accountDate]);
format(string, sizeof(string), "%sOnline Zeit: %02d:%02d:%02d\n", string, User[playerid2][accountGame][2], User[playerid2][accountGame][1], User[playerid2][accountGame][0]);
format(string, sizeof(string), "%sAdmin Level: %d\n", string, User[playerid2][accountAdmin]);
format(string, sizeof(string), "%sLevel: %d\n", string, User[playerid2][accountScore]);
format(string, sizeof(string), "%sGeld: $%d\n", string, User[playerid2][accountCash]);
format(string, sizeof(string), "%sKills: %d\n", string, User[playerid2][accountKills]);
format(string, sizeof(string), "%sMorde: %d\n", string, User[playerid2][accountDeaths]);
new deaths = User[playerid2][accountDeaths];
if(deaths == 0) deaths = 1; //Man kann nicht durch 0 teilen.
new Float:ratio = (float(User[playerid2][accountKills])/float(deaths));
format(string, sizeof(string), "%sRatio (K/D): %.3f\n", string, ratio);format(string2, sizeof(string2), "{FF0000}%s's Statistiken", pName(playerid2));
SD(playerid, DIALOG_BEGIN, DM, string2, string, "Verlassen", "");
return 1;
}In Zeile 6: playerid2 ersetzen, falls da eine andere ID hin soll.
In Zeile 19: FF0000 ist die Farbe. Siehe http://www.colorpicker.com.was hat sich denn da geändert wenn ich deins nehme was du mir verbessert hast ??
meinst du die schreibweise das alles ordentlicher aussieht hast du geändert oder irgendwas ingame ?
-
Lasse bitte diese Vollzitate, eine aussagende Zeile tut es auch, aber so wird alles nur extrem unübersichtlich. Danke!
Zur Frage:
Ich habe die Performance und das Aussehen verbessert. Außerdem habe ich den Fehler behoben, falls jemand keine Deaths hat, da man ja nicht durch 0 teilen kann. -
Wie mache ich das so, das man wenn man den Motor starten möchte, 3 Sekunden lang die Numpad 2 Taste gedrückt halten muss? bzw. andere Tasten gehen auch, ist allgemein gemeint. Habe das bis jetzt so:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/motor", true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug um den Motor zu starten!");
if(GetPlayerVehicleSeat(playerid) == 0)
{
new car = GetPlayerVehicleID(playerid);
if(GetVehicleModel(car) == 509 || GetVehicleModel(car) == 481 || GetVehicleModel(car) == 510)
{
SendClientMessage(playerid, 0x9B0000FF, "Du sitzt auf einem Fahrrad, das hat keinen Motor!");
}
else if (Motor[car] == false)
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = true;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {36D61A}an!");
}
else
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = false;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {E83A3D}aus!");
}
}
return 1;
}
return SendClientMessage(playerid, 0xFF0000FF, "Befehl existiert nicht.");
} -
-
Schau mal hier:
http://forum.sa-mp.de/gta-mult…-festhalten-2#post2055897Die Makros findest du hier:
http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange -
Du packst das als erstes in eine Funktion:
stock StartMotor(playerid)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug um den Motor zu starten!");
if(GetPlayerVehicleSeat(playerid) == 0)
{
new car = GetPlayerVehicleID(playerid),m=GetVehicleModel(car);
if(m == 509 || m == 481 || m == 510) SendClientMessage(playerid, 0x9B0000FF, "Du sitzt auf einem Fahrrad, das hat keinen Motor!");
else if (Motor[car] == false)
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = true;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {36D61A}an!");
}
else
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = false;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {E83A3D}aus!");
}
}
return 1;
}//Dann oben im Skript:
#define RELEASED(%0) \
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))new motor_time[MAX_PLAYERS];
//Unter OnPlayerKeyStateChange
if(newkeys & KEY_LOOK_BEHIND || newkeys & KEY_SUBMISSION)
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
motor_time[playerid] = gettime()+3;
}
if(RELEASED(KEY_LOOK_BEHIND) || RELEASED(KEY_SUBMISSION))
{
if((motor_time[playerid]-gettime()) < 0 && motor_time[playerid] != 0 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
StartMotor(playerid);
}
motor_time[playerid]=0;
}So sollte es klappen
-
So sollte es klappen
irgendwie ja nicht ... habe jetzt KEY_FIRE genommen, aber der Startet den Motor einfach nicht. -
KEY_FIRE genommen
Wieso KEY_FIRE? Das wäre alt...Hast du sicher 3sek die Taste 2 gedrückt und dann losgelassen?
-
Ja bei dir müsste das ka klappen, ich habe eben geschaut, kann vllt sein, das mein Numpad aus geschaltet war
//Edit
Lol, jetzt erst gemerkt, das du oben die Zahlen genommen hast, ich dachte das wäre Numpad 2
-
Wo ist denn der Sinn? Welchen Zünder muss ich X Sekunden halten und erst wenn ich loslasse geht der Motor an. Ich kenne kein Auto bei dem das so ist.
Es muss ein Timer verwendet werden, der prüft ob die drei Sekunden rum sind.
-
Hast du nen Beispiel, wie ich das mit dem Timer machen soll?
-
Welchen Zünder muss ich X Sekunden halten und erst wenn ich loslasse geht der Motor an. Ich kenne kein Auto bei dem das so ist.
...und?Ich kenne es auch nicht, dass wenn ich einen gesuchten umbringe, er im Gefängnis landet...
Aber er will es so:
Wie mache ich das so, das man wenn man den Motor starten möchte, 3 Sekunden lang die Numpad 2 Taste gedrückt halten muss?
Wenn du es mit einem Timer haben willst, dann muss man die Taste nur 1x drücken und der Motor geht nach 3sek an...
Musst dich halt entscheiden, was du haben willst
-
Kann man das noch so machen, das die Nachricht nach den 3 Sekunden kommt, das der Motor an bzw. aus geschaltet wurde? Es ist bis jetzt so, das der Nachricht er kommt, wenn ich los lasse, der Motor geht dann auch erst an, wenn ich los lasse :D.
-
Es ist bis jetzt so, das der Nachricht er kommt, wenn ich los lasse, der Motor geht dann auch erst an, wenn ich los lasse .
Ja...so wolltest du das doch auchDann drück dich besser aus :b
Dann schreibs so:
//Am besten noch oben:
new bool:m_p[MAX_PLAYERS char];//Unter OnPlayerKeyStateChange
if(newkeys & KEY_LOOK_BEHIND || newkeys & KEY_SUBMISSION)
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
if(!m_p{playerid}) SetTimerEx("@motor",3000,0,"i",playerid),m_p{playerid}=true;
}//Dann außerhalb:
@motor(i);@motor(i) return StartMotor(i),m_p{i}=false;mfg.