Initial version of Tree
This commit is contained in:
parent
45d200e6ba
commit
6ad891e5ac
2 changed files with 122 additions and 15 deletions
133
LSL/raw/tree.lsl
133
LSL/raw/tree.lsl
|
@ -9,7 +9,10 @@ float g_fMaxGrowth = 150.0; // Maximum growth value
|
|||
integer g_iLastGrowthStep = 0;
|
||||
|
||||
integer g_iLastUsedWater;
|
||||
|
||||
integer g_iChannel;
|
||||
integer g_iListen;
|
||||
key g_kAv;
|
||||
string API_SERVER;
|
||||
|
||||
integer g_iTree;
|
||||
integer g_iTreeStump;
|
||||
|
@ -64,6 +67,8 @@ setText() {
|
|||
llSetText("Water: " + (string)g_iTotalWater+"%\nStage: " + (string)g_iTreeStage + "/1" + "\nProgress: " + (string)g_iTreeGrowth+"%\n \n \n \n \n \n \n \n", <1,1,1>,1);
|
||||
}
|
||||
|
||||
integer g_iLastOwnerDev=1;
|
||||
|
||||
default
|
||||
{
|
||||
state_entry()
|
||||
|
@ -90,17 +95,72 @@ default
|
|||
llSay(0, "I am now ready to be packaged");
|
||||
llListen(global_ingredients, "", "", "");
|
||||
|
||||
#ifdef DEBUG
|
||||
llSay(0, "DEBUG MODE DETECTED.\n\n[ STARTING TIMERS ]");
|
||||
llSetTimerEvent(1);
|
||||
#endif
|
||||
|
||||
setText();
|
||||
}
|
||||
|
||||
changed(integer c) {
|
||||
if(c&CHANGED_OWNER) {
|
||||
if(!g_iLastOwnerDev)return;
|
||||
|
||||
g_iLastOwnerDev=0;
|
||||
|
||||
|
||||
/*g_iTreeGrowth=0;
|
||||
g_iTreeStage=0;
|
||||
InitialAppearance();
|
||||
g_iTotalWater=100;*/
|
||||
llSetTimerEvent(2);
|
||||
|
||||
setText();
|
||||
}
|
||||
}
|
||||
|
||||
link_message(integer s,integer n,string m,key i) {
|
||||
if(n == 0x004f) {
|
||||
API_SERVER = DecipherService(m, "api") + "/zni";
|
||||
}
|
||||
}
|
||||
|
||||
on_rez(integer t) {
|
||||
if(t == 0 && llGetObjectName() == SAPLING_NAME) {
|
||||
llSetObjectName(TREE_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
touch_start(integer t) {
|
||||
// Show the menu if done growing
|
||||
if(g_iTreeStage == 1 && g_iTreeGrowth >= 100) {
|
||||
g_iChannel = llRound(llFrand(0xFFFF));
|
||||
g_iListen = llListen(g_iChannel, "", llDetectedKey(0), "");
|
||||
|
||||
llDialog(llDetectedKey(0), "Tree\n=====\nDo you want to chop the tree down?\n\n* Tools are not yet implemented", ["Yes", "No"], g_iChannel);
|
||||
}
|
||||
}
|
||||
|
||||
http_response(key k, integer s, list m, string b) {
|
||||
list lPar = llParseString2List(b, [";;"], []);
|
||||
if(llList2String(lPar,0) == "GetServerID") {
|
||||
string sJson = llList2String(lPar,1);
|
||||
g_sServerID = llJsonGetValue(sJson, ["id"]);
|
||||
requestProductForDelivery(SAPLING_NAME, g_kAv);
|
||||
}
|
||||
}
|
||||
|
||||
timer() {
|
||||
if(llGetUnixTime() > g_iLastUsedWater+5)
|
||||
llWhisper(global_ingredients, xtea_encrypt_string(llList2Json(JSON_OBJECT, ["cmd", "query"])));
|
||||
|
||||
if(llGetUnixTime() > g_iLastGrowthStep + 120) {
|
||||
|
||||
integer iGrowTime = 120;
|
||||
#ifdef DEBUG
|
||||
iGrowTime = 1;
|
||||
#endif
|
||||
|
||||
if(llGetUnixTime() > g_iLastGrowthStep + iGrowTime) {
|
||||
|
||||
if(g_iTotalWater == 0) return;
|
||||
|
||||
|
@ -117,13 +177,18 @@ default
|
|||
setText();
|
||||
|
||||
iRoll = llRound(llFrand(100));
|
||||
if((iRoll%2)==0) {
|
||||
if(iRoll >= 75) {
|
||||
g_iTotalWater--;
|
||||
|
||||
if(g_iTotalWater <= 0) g_iTotalWater = 0;
|
||||
setText();
|
||||
}
|
||||
|
||||
if(g_iTreeStage == 1 && g_iTreeGrowth == 100) {
|
||||
llSetTimerEvent(0);
|
||||
return;
|
||||
}
|
||||
|
||||
if(g_iTreeGrowth == 100) {
|
||||
g_iTreeStage++;
|
||||
g_iTreeGrowth = 0;
|
||||
|
@ -133,26 +198,64 @@ default
|
|||
llSetLinkPrimitiveParams(g_iSapling, [PRIM_SIZE,ZERO_VECTOR]);
|
||||
}
|
||||
|
||||
if(g_iTreeStage == 1 && g_iTreeGrowth == 100) {
|
||||
llSetTimerEvent(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object_rez(key kID) {
|
||||
llSleep(2);
|
||||
llRegionSayTo(kID, getIngredientChannel(kID), xtea_encrypt_string(llList2Json(JSON_OBJECT, [
|
||||
"cmd", "init"
|
||||
])));
|
||||
|
||||
llSleep(1);
|
||||
llRegionSayTo(kID, getIngredientChannel(kID), xtea_encrypt_string(llList2Json(JSON_OBJECT, [
|
||||
"cmd", "deposit",
|
||||
"type", "Large Log",
|
||||
"amount", 1,
|
||||
"particle", "<0.502, 0.251, 0.000>",
|
||||
"texture", NULL_KEY,
|
||||
"dies", 1
|
||||
])));
|
||||
|
||||
llRemoveInventory("Service Daemon [AC]");
|
||||
llRemoveInventory(llGetScriptName());
|
||||
}
|
||||
|
||||
listen(integer c,string n,key i,string m) {
|
||||
string sJson = xtea_decrypt_string(m);
|
||||
if(llJsonGetValue(sJson, ["cmd"]) == "reply") {
|
||||
if(llJsonGetValue(sJson, ["ingredient"]) == "Water") {
|
||||
if(g_iTotalWater <= 75 && llGetUnixTime() > g_iLastUsedWater + 5) {
|
||||
if(c == global_ingredients) {
|
||||
|
||||
g_iTotalWater += 25;
|
||||
g_iLastUsedWater = llGetUnixTime();
|
||||
llRegionSayTo(i, getIngredientChannel(i), xtea_encrypt_string(llList2Json(JSON_OBJECT, ["cmd", "use", "id", llJsonGetValue(sJson, ["id"])])));
|
||||
string sJson = xtea_decrypt_string(m);
|
||||
if(llJsonGetValue(sJson, ["cmd"]) == "reply") {
|
||||
if(llJsonGetValue(sJson, ["ingredient"]) == "Water") {
|
||||
if(g_iTotalWater <= 75 && llGetUnixTime() > g_iLastUsedWater + 5) {
|
||||
|
||||
setText();
|
||||
g_iTotalWater += 25;
|
||||
g_iLastUsedWater = llGetUnixTime();
|
||||
llRegionSayTo(i, getIngredientChannel(i), xtea_encrypt_string(llList2Json(JSON_OBJECT, ["cmd", "use", "id", llJsonGetValue(sJson, ["id"])])));
|
||||
|
||||
setText();
|
||||
}
|
||||
}
|
||||
}
|
||||
}else if( c == g_iChannel) {
|
||||
|
||||
llListenRemove(g_iListen);
|
||||
if(m == "Yes") {
|
||||
llRezObject("Tree Log [AC]", llGetPos()+<0,0,0.5>, ZERO_VECTOR, ZERO_ROTATION, 1990);
|
||||
|
||||
llSetLinkAlpha(g_iTreeStump, 1, ALL_SIDES);
|
||||
llSetLinkAlpha(g_iTree, 0, ALL_SIDES);
|
||||
|
||||
llSetLinkPrimitiveParams(g_iTree, [PRIM_POS_LOCAL, ZERO_VECTOR, PRIM_SIZE, ZERO_VECTOR]);
|
||||
|
||||
// Deliver 1 sapling, additional ones need to be bought
|
||||
llHTTPRequest(API_SERVER + "/Get_Server_ID.php", [HTTP_MIMETYPE, "application/json", HTTP_METHOD, "POST"], xtea_encrypt_string(llList2Json(JSON_OBJECT, [
|
||||
"psk", SERVER_PSK,
|
||||
"name", "Farming"
|
||||
])));
|
||||
//requestProductForDelivery("Tree A Sapling [AC]");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue