Wysłany: 2013-11-10, 18:44
_Lukaszniko_
Wiek: 31 Na forum: 5174 dni Posty: 36
Piwa : 11
Witam. Zaj??em si? edycj? edytora obiekt?w in game by SlashQ. Nie mog? si? upora? z jednym problemem. Nie wiem w jaki spos?b zmieni? poni?szy kod, aby tworzone obiekty wy?wietla?y si? dla wszystkich graczy, a nie tylko dla samego mappera.
Kod: public OnPlayerEditObject( playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ )
{
if(response == EDIT_RESPONSE_UPDATE)
{
for(new i = 0; i < MAX_EDITIONS; i++)
{
if(GetSVarIntEx(playerid, OBJECT_ID, i) == objectid)
{
SetSVarFloatEx(playerid, OBJECT_X, fX, i);
SetSVarFloatEx(playerid, OBJECT_Y, fY, i);
SetSVarFloatEx(playerid, OBJECT_Z, fZ, i);
SetSVarFloatEx(playerid, OBJECT_RX, fRotX, i);
SetSVarFloatEx(playerid, OBJECT_RY, fRotY, i);
SetSVarFloatEx(playerid, OBJECT_RZ, fRotZ, i);
if(GetPVarInt(playerid, "SeeLabels"))
{
DeletePlayer3DTextLabel(playerid, PlayerText3D:GetSVarIntEx(playerid, LABEL_ID, i));
SetSVarIntEx(playerid, LABEL_ID, _:CreatePlayer3DTextLabel(playerid, GetSVarStringEx(playerid, LABEL_STR, i), 0xFFFFFFEE, fX, fY, fZ, 100.0), i);
}
break;
}
}
}
else if(response == EDIT_RESPONSE_FINAL || response == EDIT_RESPONSE_CANCEL)
{
DeletePVar(playerid, "Edition");
}
return 1;
}
Wikipedia sampa niestety nie pomog?a. Kto? ma jaki? pomys?? By?bym wdzi?czny za ka?de wskaz?wki.
Wysłany: 2013-11-10, 18:50
Sillence
Wiek: 26 Na forum: 5157 dni Posty: 1514
Nick w MP: Sillence
Piwa : 1517
Pisz?c obiekt masz na my?li 3DTEXT ? Bo nie znalaz?em w twoim kodzie ?adnego tworzenia obiekt?w
Wysłany: 2013-11-10, 19:13
_Lukaszniko_
Wiek: 31 Na forum: 5174 dni Posty: 36
Piwa : 11
Z tego co wyczyta?em OnPlayerEditObject odpowiada za wy?wietlanie obiekt?w dla wszystkich graczy.
To chyba o to chodzi?o. : d
Kod: case DIALOG_NEW_OBJECT:
{
if(response && IsNumeric(inputtext) && strval(inputtext) > 611)
{
SetPVarInt(playerid, "new_object_model", strval(inputtext));
ShowPlayerDialog(playerid, DIALOG_CREATE_OBJECT, DIALOG_STYLE_INPUT, "-", "Wpisz komentarz do obiektu (lub nie)", "Dalej", "Zamknij");
}
}
case DIALOG_CREATE_OBJECT:
{
if(response)
{
new model, object, Float:Pos[6];
model = GetPVarInt(playerid, "new_object_model");
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetXYInFrontOfPlayer(playerid, Pos[0], Pos[1], 3.0);
object = CreatePlayerObject(playerid, model, Pos[0], Pos[1], Pos[2], Pos[3], Pos[4], Pos[5]);
for(new i = 0; i < MAX_EDITIONS; i++)
{
if(!GetSVarTypeEx(playerid, OBJECT_MODEL, i))
{
SetPlayerMapData(playerid, object, i, model, inputtext, Pos[0], Pos[1], Pos[2], Pos[3], Pos[4], Pos[5]);
EditPlayerObject(playerid, object);
DeletePVar(playerid, "new_object_model");
return 1;
}
}
DeletePVar(playerid, "new_object_model");
return ShowPlayerDialog(playerid, DIALOG_SIMPLE_MESSAGE, DIALOG_STYLE_MSGBOX, "-", "Wykorzysta?e?(a?) ju? maksymaln? liczb? wolnych obiekt?w.","Zamknij", "");
}
}
Wysłany: 2013-11-10, 20:49
Sillence
Wiek: 26 Na forum: 5157 dni Posty: 1514
Nick w MP: Sillence
Piwa : 1517
Zobacz w ten spos?b:
Kod: case DIALOG_NEW_OBJECT:
{
if(response && IsNumeric(inputtext) && strval(inputtext) > 611)
{
SetPVarInt(playerid, "new_object_model", strval(inputtext));
ShowPlayerDialog(playerid, DIALOG_CREATE_OBJECT, DIALOG_STYLE_INPUT, "-", "Wpisz komentarz do obiektu (lub nie)", "Dalej", "Zamknij");
}
}
case DIALOG_CREATE_OBJECT:
{
if(response)
{
new model, object, Float:Pos[6];
model = GetPVarInt(playerid, "new_object_model");
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetXYInFrontOfPlayer(playerid, Pos[0], Pos[1], 3.0);
object = CreateObject(model, Pos[0], Pos[1], Pos[2], Pos[3], Pos[4], Pos[5]);
for(new i = 0; i < MAX_EDITIONS; i++)
{
if(!GetSVarTypeEx(playerid, OBJECT_MODEL, i))
{
SetPlayerMapData(playerid, object, i, model, inputtext, Pos[0], Pos[1], Pos[2], Pos[3], Pos[4], Pos[5]);
EditPlayerObject(playerid, object);
DeletePVar(playerid, "new_object_model");
return 1;
}
}
DeletePVar(playerid, "new_object_model");
return ShowPlayerDialog(playerid, DIALOG_SIMPLE_MESSAGE, DIALOG_STYLE_MSGBOX, "-", "Wykorzysta?e?(a?) ju? maksymaln? liczb? wolnych obiekt?w.","Zamknij", "");
}
}
Wysłany: 2013-11-14, 21:16
_Lukaszniko_
Wiek: 31 Na forum: 5174 dni Posty: 36
Piwa : 11
Zadzia?a? zadzia?a?o. Teraz wszyscy widz? tworzony obiekt. Niestety pojawi? si? kolejny problem. Obiekt?w nie da si? edytowa?. Pewnie zn?w b?dzie trzeba zmieni? co? z playerid-model model-playerid. Kod: case DIALOG_EDIT_OR_DELETE:
{
if(response)
{
SelectObjectEx(playerid, GetPVarInt(playerid, "Selected"));
DeletePVar(playerid, "Selected");
return 1;
}
else
{
new str[84];
format(str, sizeof str, "The edition ID[%d] was deleted.", GetPVarInt(playerid, "Selected"));
ShowPlayerDialog(playerid, DIALOG_SIMPLE_MESSAGE, DIALOG_STYLE_MSGBOX, "-", str, "Close", "");
DestroyPlayerObject(playerid, GetSVarIntEx(playerid, OBJECT_ID, GetPVarInt(playerid, "Selected")));
DeletePlayer3DTextLabel(playerid, PlayerText3D:GetSVarIntEx(playerid, LABEL_ID, GetPVarInt(playerid, "Selected")));
DeleteSVarEx(playerid, OBJECT_MODEL, GetPVarInt(playerid, "Selected"));
DeletePVar(playerid, "Selected");
return 1;
}
}
Jak tak dalej p?jdzie to ca?y edytor tu wklej?, a ju? po?owa jest wklejona. xD
Powoli pomys?y mi si? ko?cz?. Dla kogo? kto si? zna jest to pewnie 5 minut roboty. Dla mnie .. niewykonalne. Wstawiam ca?y kod..
Licz? na pomoc. : /
http://pastebin.com/s2ByVRpc
Wysłany: 2013-11-15, 13:39
Raydex
Wiek: 36 Na forum: 6037 dni Posty: 138
Piwa : 1043
Musisz w ca?ym kodzie pozmienia? linijki typu DestroyPlayerObject na DestroyObject, CreatePlayerObject na CreateObject itp.
Tagi: pokazywanie :: obiektów :: ingame :: edytor
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: