Initial version of Tree

This commit is contained in:
zontreck 2024-06-11 14:11:53 -07:00
parent 45d200e6ba
commit 6ad891e5ac
2 changed files with 122 additions and 15 deletions

View file

@ -9,7 +9,10 @@ float g_fMaxGrowth = 150.0; // Maximum growth value
integer g_iLastGrowthStep = 0; integer g_iLastGrowthStep = 0;
integer g_iLastUsedWater; integer g_iLastUsedWater;
integer g_iChannel;
integer g_iListen;
key g_kAv;
string API_SERVER;
integer g_iTree; integer g_iTree;
integer g_iTreeStump; 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); 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 default
{ {
state_entry() state_entry()
@ -90,17 +95,72 @@ default
llSay(0, "I am now ready to be packaged"); llSay(0, "I am now ready to be packaged");
llListen(global_ingredients, "", "", ""); llListen(global_ingredients, "", "", "");
#ifdef DEBUG
llSay(0, "DEBUG MODE DETECTED.\n\n[ STARTING TIMERS ]"); llSay(0, "DEBUG MODE DETECTED.\n\n[ STARTING TIMERS ]");
llSetTimerEvent(1); llSetTimerEvent(1);
#endif
setText(); 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() { timer() {
if(llGetUnixTime() > g_iLastUsedWater+5) if(llGetUnixTime() > g_iLastUsedWater+5)
llWhisper(global_ingredients, xtea_encrypt_string(llList2Json(JSON_OBJECT, ["cmd", "query"]))); 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; if(g_iTotalWater == 0) return;
@ -117,13 +177,18 @@ default
setText(); setText();
iRoll = llRound(llFrand(100)); iRoll = llRound(llFrand(100));
if((iRoll%2)==0) { if(iRoll >= 75) {
g_iTotalWater--; g_iTotalWater--;
if(g_iTotalWater <= 0) g_iTotalWater = 0; if(g_iTotalWater <= 0) g_iTotalWater = 0;
setText(); setText();
} }
if(g_iTreeStage == 1 && g_iTreeGrowth == 100) {
llSetTimerEvent(0);
return;
}
if(g_iTreeGrowth == 100) { if(g_iTreeGrowth == 100) {
g_iTreeStage++; g_iTreeStage++;
g_iTreeGrowth = 0; g_iTreeGrowth = 0;
@ -133,14 +198,33 @@ default
llSetLinkPrimitiveParams(g_iSapling, [PRIM_SIZE,ZERO_VECTOR]); 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) { listen(integer c,string n,key i,string m) {
if(c == global_ingredients) {
string sJson = xtea_decrypt_string(m); string sJson = xtea_decrypt_string(m);
if(llJsonGetValue(sJson, ["cmd"]) == "reply") { if(llJsonGetValue(sJson, ["cmd"]) == "reply") {
if(llJsonGetValue(sJson, ["ingredient"]) == "Water") { if(llJsonGetValue(sJson, ["ingredient"]) == "Water") {
@ -154,5 +238,24 @@ default
} }
} }
} }
}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]");
}
}
} }
} }

View file

@ -1 +1,5 @@
//#define DEBUG 1
#define SAPLING_NAME "Tree A Sapling [AC]"
#define TREE_NAME "Tree A [AC]"
#include "../raw/tree.lsl" #include "../raw/tree.lsl"